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