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);
博客地址http://www.cnblogs.com/funlake,欢迎前来讨论