PHP eval(数组作为字符串)返回null

PHP eval(数组作为字符串)返回null,php,eval,Php,Eval,有人能解释一下为什么我得到的是null而不是数组吗 $arr = eval("array('foo'=>'bar');"); // returns null var_dump($arr); 您需要返回数组 从: eval()返回NULL,除非在求值代码中调用return,在这种情况下,返回传递给return的值 所以你需要做: eval("\$arr = array('foo'=>'bar');"); var_dump($arr); 首先,eval是非常不受欢迎的,如中所述

有人能解释一下为什么我得到的是null而不是数组吗

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

// returns null
var_dump($arr);

您需要
返回
数组

从:

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

所以你需要做:

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

var_dump($arr);

首先,
eval
是非常不受欢迎的,如中所述


此外,您还应该执行类似于
$arr=eval(“返回数组('foo'=>'bar');”)的操作即使用eval功能初始化
$arr
。查看它的操作

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

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

为什么要
eval
ing那个字符串?必须有更好的方法来实现这一点,例如
json\u decode
取消序列化
。您需要转义
$
。你在双引号中,所以PHP试图插入
$arr
,因为它不存在,所以你最终会
eval
“=array('foo'=>'bar');”
。明白了,谢谢。我没有太注意
返回值
,只是看了一个不使用
返回的示例
@user1643156:为什么首先要使用
eval
?这是缓慢和不安全的。也许有更好的方法来做你想做的事。谢谢,我知道eval()的邪恶部分。该函数仅由我(管理员)使用。
$arr = eval("return array('foo'=>'bar');");