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程序设计的学习有所帮助。

php技术php实现根据字符串生成对应数组的方法,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。