PHP eval(数组作为字符串)返回null
有人能解释一下为什么我得到的是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是非常不受欢迎的,如中所述
$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');");