双重编码php多维数组发送到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?