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