Nasıl bir JSON dizi PHP dizi kodlamak yapmak, nesne değil?

3 Cevap php

Ben bir Zend_Db sorgudan döndürülen bir dizi json_encode çalışıyorum.

var_dump verir: (El 0 üye ekleyerek resmi değişmez.)

array(3) {
  [1]=>
  array(3) {
    ["comment_id"]=>
    string(1) "1"
    ["erasable"]=>
    string(1) "1"
    ["comment"]=>
    string(6) "test 1"
  }
  [2]=>
  array(3) {
    ["comment_id"]=>
    string(1) "2"
    ["erasable"]=>
    string(1) "1"
    ["comment"]=>
    string(6) "test 1"
  }
  [3]=>
  array(3) {
    ["comment_id"]=>
    string(1) "3"
    ["erasable"]=>
    string(1) "1"
    ["comment"]=>
    string(6) "jhghjg"
  }
}

Kodlanmış bir dize gibi görünüyor:

{"1":{"comment_id":"1","erasable":"1","comment":"test 1"},
 "2":{"comment_id":"2","erasable":"1","comment":"test 1"},
 "3":{"comment_id":"3","erasable":"1","comment":"jhghjg"}}

Ben gerekenler:

[{"comment_id":"1","erasable":"1","comment":"test 1"},
{"comment_id":"2","erasable":"1","comment":"test 1"},
{"comment_id":"3","erasable":"1","comment":"jhghjg"}]

Hangi php.ini / json_encode belgelerine gibi görünmelidir ne diyor.

3 Cevap

Eğer ilk dizi nasıl ayarlıyorsun?

: Eğer gibi kurarsanız

array(
 "1" => array(...),
 "2" => array(...),
);

o zaman sayısal indeksler ama dizeleri ile bir dizi yok ve bu JS dünyada bir nesneye dönüştürülür. (Yani 1 yerine 0 başlayarak) sıkı bir düzen kurmak istemiyorsanız bu da olabilir.

Tüm ilk etapta tuşlarını kullanarak olmadan dizisini ayarlayarak deneyin: Ben orijinal kodunuzu göremiyorum çünkü bu, ancak, karanlıkta bir vurulur:

array(
 array(...),
 array(...),
);

Seb 'ın cevabı genişletir bilgi eklendi.

php > print json_encode( array( 'a', 'b', 'c' ) ) ;
["a","b","c"]
php > print json_encode( array( 0 => 'a',  1 => 'b', 2 => 'c' ) ) ;
["a","b","c"]
php > print json_encode( array( 1 => 'a',  2 => 'b', 3 => 'c' ) ) ;
{"1":"a","2":"b","3":"c"}
php >

Not: onun iyi bir neden ile bu şekilde biçimlendirme:

Göndermek için olsaydı

{"1":"a","2":"b","3":"c"}

olarak

["a","b","c"]

Yaptığın zaman $data[1] Php geri "a" olsun, ama JavaScript tarafta, "b" geri almak istiyorum.

Php geleneksel, sürekli bir dizi test etmek için yaygın bir şekilde bir dizin '0 'için kontrol etmektir. Lütfen dizisine bu eklemeyi deneyin, muhtemelen o yerine HashMap bir dizi dikkate edeceğiz.