2
$arr = eval("array('foo'=>'bar');");

// returns null
var_dump($arr);

有人可以解释为什么我得到 null 而不是数组吗?

4

4 回答 4

18

你需要return数组。

文档

eval()返回NULL除非return在评估代码中调用,在这种情况下return返回传递给的值。

所以你需要这样做:

$arr = eval("return array('foo'=>'bar');");
于 2012-10-19T14:23:03.743 回答
1

你的意思是

eval("\$arr = array('foo'=>'bar');"); 

var_dump($arr);
于 2012-10-19T14:22:38.633 回答
0

首先,如手册eval中所述,强烈建议不要这样做。

另外,你应该做类似$arr = eval("return array('foo'=>'bar');");ie 的事情。$arr使用 eval 函数进行初始化。在此处查看实际操作

于 2012-10-19T14:24:17.123 回答
0

eval 函数执行给它的 php 代码。由于您的代码不返回任何内容,因此它给出了 null。您需要返回数组并将其存储在一个变量中,例如,

$arr = eval("return array('foo'=>'bar');");
于 2012-10-19T14:28:22.577 回答