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

本文实例讲述了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程序设计的学习有所帮助。

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
首先在ACTION中新建一个文件EmptyAction.class.php,其代码如下: ?php class EmptyAction extends Action{ function _empty(){ header("HTTP/1.0 404 Not Found");//使HTTP返回404状态码 $this-display("Public:404"); } } ? 使用apache服务器的情况下需在apache中的网站配置中加入 ErrorDocument 404 /404.html 即可。 使用i
如果做一个在线的文件管理系统的话,那么首先必须知道怎么读取目录和文件,其实这个功能几行代码就可以实现了。 输出效果: 实现代码: 复制代码 代码如下: ?php $dir = "D:/"; //要获取的目录 echo "********** 获取目录下所有文件和文件夹 ***********hr/"; //先判断指定的路径是不是一个文件夹 if (is_dir($dir)){ if ($dh = opendir($dir)){ while (($file = readdir($dh))!= false){
说在前面: 1、以下题目,除了编程任务外其他都需要写在给你提供的草纸上。纸张是珍贵的地球资源,请节约使用。编程任务在有相应的环境时,会要求上机书写,实在没有条件,就只能写在草纸上了。 2、时间: 基础任务+进阶任务+设计任务 = 90分钟 编程任务 = 60分钟 基础任务: 1、请列举你能想到的UNIX信号,并说明信号用途。 2、请列举、你能想到的所有的字符串查找算法,并加注释简单说明。 3、有一个IP地址(192.168.0.1),请写出其32位无符号整数形式。 4、写出、你能想到的所有HTTP返回状态
大量删除数据必然会在数据文件中造成不连续的空白空间,而当插入数据时,这些空白空间则会被利用起来 。 对于不同的存储引擎整理碎片的方式不一样。 myisam 可以有以下方式: mysql show table status from test like 'testusers'\G *************************** 1. row *************************** .... Rows: 3 Avg_row_length: 45 Data_free: 40 .....

php解析json数据实例 - 2015-03-30 11:03:09

本文以实例形式展示了php解析json数据的方法,这是一个比较实用的功能,分享给大家供大家参考。具体代码如下: ?php$data;$data.= "[";for ($i = 0; $i 20; $i++) { $data.= "{"; $data.= "\"id\":\"" . 110 . "\","; $data.= "\"name\":\"" . 110 . "\","; $data.= "\"original_price\":\"" . 110 . "\","; $data.= "\"sale_p
复制代码 代码如下: ?php /********************************************** * __construct 对象初始化函数使用 * destruct 析构函数的使用 * $this 关键字的使用($this关键字是用来访问当前对象中的对象属性和对象*方法的系统变量) * **********************************************/ header("Content-Type:text/html;charset=UTF-8");
Codeigniter处理用户登录验证后URL跳转,主要涉及到了My_Controller.php页面以及登录验证模块User.php页面,具体代码如下: My_Controller.php页面: 复制代码 代码如下: class MY_Controller extends CI_Controller { public function __construct() { parent::__construct(); /*判断是否登录,判断当前URL是否是auth/login*/ if ( ! $this-t

php不写闭合标签的好处 - 2015-03-30 11:03:06

最早这个概念是从Drupal中接触到的,一开始有点不习惯——为什么不写闭合标签呢?这感觉很不完美啊,对于有强迫症的人来说很不适应嘛!后来,在工作中碰到了因为标签闭合而引起的问题,才开始不写闭合标签。 参阅了一些文章,对PHP闭合标签的总结如下: 好处: 如果这个是一个被别人包含的程序,没有这个结束符,可以减少很多很多问题,比如说:header, setcookie, session_start这些动作之前不能有输出,如果不小心在? 后边加了不可见字符(多余的空格、换行符)等破坏页面显示,就会报"Heade
本文实例讲解了PHP数组排序中sort、asort与ksort的用法,供大家参考借鉴之用。具体实例如下所示: ?php$arr = array('d'='sdf', 'r'='sdf', 'a'= 'eee');//sort($arr); // 对数组的值进行重排, 删除之前的键值, 变为索引数组//asort($arr); // 对数组按照值进行重排,并保持索引关系,索引数组和关联数组均适用ksort($arr); // 对数组按照键值进行重排,并保持索引关系,索引数组和关联数组均适用// 对应逆序还有
我一说出这样的话,人们大量的评论就会批评道:你错了,错了,完全的错了。 好的程序员需要具备沟通交流的技能,他们要有跟他人一起合作的能力。团队里不止你一个人! 事实上,人们会说:最好折中一下对技术上的要求,这样可以找出更能适应企业文化的人。 你不如这样说更合适:找不到那种技术上又好、又能适应企业文化的人,我就等着,一直找到为止。 我们很少有敢这样奢侈的公司,也许Google可以这样,就是Google这样的公司也一直处于一个“对招聘程序员感到绝望”的状态中。如果你决定去等,我可以预见到每招到一个程序员你都要等待