php字符串变数组

  这篇不是讨论split,explode的用法,而是探讨一种特殊情况。

  举例说明.

$array = array(2,'a'=>array('b'=>'c'));
//深度keys列表
$keys = array('a','b');
//
$vals = 'x';

//问题是,如何根据$keys数组(动态),改动相应数组$array的值
//比如上述情况要求将$array['a']['b'] 的值由'c'改成'x'
//注意$keys是动态的,也有可能是array('a','c','x','d'),这种情况就
//要求将$array['a']['c']['x']['d']设置为'x';

 

 

 乍一看,似乎很简单,eval不就可以搞定了么,确实,但是eval在很多服务器都是严禁使用的,

 除去eval,不是还有preg_replace + e修正符么,的确也可以,但是总是有一些安全上的担忧,

 万一给注入system/exec/shel_exec函数+系统命令岂不是和eval一样危险?

 最终想到了parse_str,这个相对就安全不少。

 

$array = array(2,'a'=>array('b'=>'c'));
//深度keys列表
$keys = array('a','b');
//
$vals = 'x';
//字符串转数组
parse_str('array['.implode('][',$keys).']='.$vals);

print_r($array);

 

posted @ 2010-07-15 11:53  一缕青烟  阅读(801)  评论(0编辑  收藏  举报