【发布时间】:2012-10-19 14:20:54
【问题描述】:
$arr = eval("array('foo'=>'bar');");
// returns null
var_dump($arr);
谁能解释一下为什么我得到的是 null 而不是数组?
【问题讨论】:
-
你为什么
evaling那个字符串?必须有更好的方法来做到这一点,例如json_decode或unserialize。
$arr = eval("array('foo'=>'bar');");
// returns null
var_dump($arr);
谁能解释一下为什么我得到的是 null 而不是数组?
【问题讨论】:
evaling那个字符串?必须有更好的方法来做到这一点,例如json_decode 或unserialize。
你需要return数组。
来自docs:
eval()返回NULL,除非在评估代码中调用return,在这种情况下,将返回传递给return的值。
所以你需要这样做:
$arr = eval("return array('foo'=>'bar');");
【讨论】:
Return Value我没太在意,只看了不使用return的例子。
eval?它缓慢且不安全。可能有更好的方法来做你想做的事。
你是说
eval("\$arr = array('foo'=>'bar');");
var_dump($arr);
【讨论】:
$。你在双引号中,所以 PHP 试图插入 $arr,因为它不存在你结束了 evaling " = array('foo'=>'bar');"。
eval 函数执行给它的 php 代码。 由于您的代码不返回任何内容,因此它给出了 null。 您需要返回数组并将其存储在变量中,例如,
$arr = eval("return array('foo'=>'bar');");
【讨论】: