PHP eval(array_as_string) returns null

后端 未结 4 754
独厮守ぢ
独厮守ぢ 2021-01-15 03:47
$arr = eval(\"array(\'foo\'=>\'bar\');\");

// returns null
var_dump($arr);

Can someone please explain why did I get null instead of an array?

相关标签:
4条回答
  • 2021-01-15 04:18

    First of all, eval is highly discouraged as explained in the manual.

    Also, you should be doing something like $arr = eval("return array('foo'=>'bar');"); ie. initialising $arr with the eval function. See it in action here

    0 讨论(0)
  • 2021-01-15 04:23

    You need to return the array.

    From the docs:

    eval() returns NULL unless return is called in the evaluated code, in which case the value passed to return is returned.

    So you need to do:

    $arr = eval("return array('foo'=>'bar');");
    
    0 讨论(0)
  • 2021-01-15 04:36

    The eval function executes the php code given to it. As your code returns nothing, it gives null. You need to return the array and store it in a variable like,

    $arr = eval("return array('foo'=>'bar');");
    
    0 讨论(0)
  • 2021-01-15 04:40

    Did you mean

    eval("\$arr = array('foo'=>'bar');"); 
    
    var_dump($arr);
    
    0 讨论(0)
提交回复
热议问题