简体   繁体   中英

double encode php multidimensional array to send to javascript

It is not so much as a problem as I have fixed the issue but I am stuck on the fix, I would like to know why you need to double json_encode a multidimenail array in php when you are returning it to javascript in an ajax call for example.

My Array

$jsonData = array('foo', 'bar');
$jsonData['catOne'][] = array('foo two', 'bar two');

PHP

return json_encode(json_encode($jsonData));

You don't need to. The json_encode goes through the deepest elements and the json will be perfectly encoded:

$arr = array(
    1 => array(5,6,7),
    2 => array(4,3,2),
);

var_dump(json_encode($arr));

The output for that is:

string(25) "{"1":[5,6,7],"2":[4,3,2]}"

If you try:

var_dump(json_encode(json_encode($arr)));

The output will be:

string(31) ""{\"1\":[5,6,7],\"2\":[4,3,2]}""

See the difference?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM