无法评估字符串数组

时间:2011-12-20 10:46:21

标签: php eval

如何将其更改为JSON数组?即时通讯使用eval技术,但这不起作用。我从upx服务器得到这种响应:

array(
    'invoice' => array(
        'id' => '4',
        'realid' => '4',
        'address_rev' => NULL,
        'relation_data_id' => '3',
        'contact_set_rev' => '3',
        'business_data_rev' => '4',
        'private_data_rev' => NULL,
        // etc..
    )
); 

var_dump($newdata); // String
eval("\$newdata = \"$newdata\";");
var_dump($newdata); // Still stays as a string as shown above....

有任何线索吗?

Ty已经!

3 个答案:

答案 0 :(得分:3)

当我告诉你这件事时,你会非常糟糕。

但它仍然是一个字符串的原因是因为你将""包裹在你eval的调用中,当然包裹在引号内的字母会使它成为..(鼓声 ..)一个字符串。

 eval ('$newdata = ' . $newdata . ';'); // this will do what you want

如果您想立即将其变成json,请使用以下内容:

 eval ('$newdata = json_encode (' . $newdata . ');');

答案 1 :(得分:2)

var_dump($newdata); // String
eval("\$newdata = $newdata;");
var_dump($newdata); // Still stays as a string as shown above....
// eval("\$newdata = \"$newdata\";");
//                    ^         ^

删除双引号。你把它放回一个字符串......

虽然如上所述,如果你想传输PHP数组,你应该使用serialize()

答案 2 :(得分:1)

你可以试试php的json_encode。你可以尝试

$json_array = json_encode($your_array);

这将为您提供json编码的数组。然后你可以在$ json_array上做json_decode来获取原始内容

检查您的php是否具有JSON扩展名