Javascript Array 2 boyutlu PHP dizi kodlamak nasıl?

2 Cevap php

İşte benim sorunum, ben böyle bir php dizi var:

$output = array(array(1,1,1,1),array(2,2,2,2),array(3,3,3,3));

dizi json kodlanmış sonra ben bu var:

$output = {"1":[1,1,1,1],"2":[2,2,2,2],"3":[3,3,3,3]}

tüm istediğim JS bu gibi görünüyor böylece Javascript PHP dizi geçmektir:

var output = [[1,1,1,1],[2,2,2,2],[3,3,3,3,]];

Şimdiden teşekkürler ...

2 Cevap

PHP hangi sürümünü kullanıyorsunuz?

PHP 5.2.10 ile, ben sizin için soruyorsun ne olsun:

$output = array(array(1,1,1,1),array(2,2,2,2),array(3,3,3,3));
$json = json_encode($output);

echo $json . "\n";

Çıkışlar:

$ php temp.php
[[1,1,1,1],[2,2,2,2],[3,3,3,3]]


At least, this is without the JSON_FORCE_OBJECT option -- that was added in PHP 5.3


Maybe you can find something interesting in the user notes on the json_encode manual page ?

Örneğin, simoncpu says,

A note of caution: If you are wondering why json_encode() encodes your PHP array as a JSON object instead of a JSON array, you might want to double check your array keys because json_encode() assumes that you array is an object if your keys are not sequential.

And if you search for json_encode+array+object on PHP's bugtracker, maybe you'll get some interesting result ?
(For instance, something that says this was a bug, which has been corrected in recent versions of PHP ?)

Orijinal çözüm benim için çalışıyor:

adam@fsck:~:0$ php -r 'echo json_encode(array(array(1,1,1,1),array(2,2,2,2),array(3,3,3,3)));'
[[1,1,1,1],[2,2,2,2],[3,3,3,3]]