php实现根据字符串生成对应数组的方法


Posted in PHP onSeptember 22, 2014

本文实例讲述了php实现根据字符串生成对应数组的方法,是比较实用的技巧。分享给大家供大家参考。具体方法如下:

先看看如下示例:

<?php 
$config = array( 
 'project|page|index' => 'content', 
 'project|page|nav' => array( 
 array( 
 'image' => '1.jpg', 
 'name' => 'home' 
 ), 
 array( 
 'image' => '2.jpg', 
 'name' => 'about' 
 ) 
 ), 
 'project|page|open' => true 
); 
?>

根据$config生成以下数组:

<?php 
$result = array( 
 'project' => array( 
 'page' => array( 
 'index' => 'content', 
 'nav' => array( 
  array( 
  'image' => '1.jpg', 
  'name' => 'home' 
  ), 
  array( 
  'image' => '2.jpg', 
  'name' => 'about' 
  ) 
 ), 
 'open' => true 
 ) 
 ) 
); 
?>

方法:使用eval实现:

<?php 
$config = array( 
 'project|page|index' => 'content', 
 'project|page|nav' => array( 
 array( 
 'image' => '1.jpg', 
 'name' => 'home' 
 ), 
 array( 
 'image' => '2.jpg', 
 'name' => 'about' 
 ) 
 ), 
 'project|page|open' => true 
); 
 
$result = array(); 
foreach($config as $key=>$val){ 
 
 $tmp = ''; 
 $keys = explode('|', $key); 
 
 for($i=0,$len=count($keys); $i<$len; $i++){ 
 $tmp .= "['".$keys[$i]."']"; 
 } 
 
 if(is_array($val)){ 
 eval('$result'.$tmp.'='.var_export($val,true).';'); 
 }elseif(is_string($val)){ 
 eval('$result'.$tmp.'='.$val.';'); 
 }else{ 
 eval('$result'.$tmp.'=$val;'); 
 } 
 
} 
 
print_r($result); 
 
?>

输出结果:

Array
(
[project] => Array
(
[ page ] => Array
(
[index] => content
[nav] => Array
(
[0] => Array
(
[image] => 1.jpg
[name] => home
)
[1] => Array
(
[image] => 2.jpg
[name] => about
)
)
[open] => 1
)
)
)

希望本文所述对大家PHP程序设计的学习有所帮助。

PHP 相关文章推荐
php小技巧 把数组的键和值交换形成了新的数组,查找值取得键
Jun 02 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
Sep 15 PHP
浅析php变量修饰符static的使用
Jun 28 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
Sep 16 PHP
PHP的拦截器实例分析
Nov 03 PHP
PHP将session信息存储到数据库的类实例
Mar 04 PHP
Laravel 5框架学习之Laravel入门和新建项目
Apr 07 PHP
php实现微信公众号无限群发
Oct 11 PHP
php生成验证码函数
Oct 20 PHP
WordPress中邮件的一些修改和自定义技巧
Dec 15 PHP
关于PHP中字符串与多进制转换函数的实例代码
Nov 03 PHP
PHP实现根据数组某个键值大小进行排序的方法
Mar 13 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
Sep 22 #PHP
php中Y2K38的漏洞解决方法实例分析
Sep 22 #PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
Sep 22 #PHP
PHP中常用的输出函数总结
Sep 22 #PHP
C#静态方法与非静态方法实例分析
Sep 22 #PHP
php操作csv文件代码实例汇总
Sep 22 #PHP
PHP提示Cannot modify header information - headers already sent by解决方法
Sep 22 #PHP
You might like
坏狼的PHP学习教程之第2天
2008/06/15 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
PHP魔术方法使用方法汇总
2016/02/14 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
Javascript之文件操作
2007/03/07 Javascript
javascript 框架小结 个人工作经验
2009/06/13 Javascript
Dom在ajax技术中的作用说明
2010/10/25 Javascript
JavaScript代码复用模式详解
2014/11/07 Javascript
详解Document.Cookie
2015/12/25 Javascript
AngularJS单选框及多选框实现双向动态绑定
2016/01/13 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
nodejs mysql 实现分页的方法
2017/06/06 NodeJs
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
2020/09/12 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
[05:04]DOTA2上海特级锦标赛主赛事第二日TOP10
2016/03/04 DOTA
[01:12:27]EG vs Secret 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
Python获取文件ssdeep值的方法
2014/10/05 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
资深地理教师自我评价
2013/09/21 职场文书
经贸日语专业个人求职信范文
2013/12/28 职场文书
个人安全生产责任书
2014/07/28 职场文书
电影开国大典观后感
2015/06/04 职场文书
大学班干部竞选稿
2015/11/20 职场文书
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android