Json_encode ile ilgili sorun ()

4 Cevap php

i basit bir dizi var:

array
  0 => string 'Kum' (length=3)
  1 => string 'Kumpel' (length=6)

Ben json_encode kullanarak array () kodladığınızda i şu olsun:

["Kum","Kumpel"]

Benim sorum, ["Kum","Kumpel"] yerine almak için sebep ne olduğunu { "0" : "Kum", "1" : "Kumpel" }?

4 Cevap

"{}" Parantezler bir nesne belirtmek ve "[]" JSON şartnamesine uygun diziler için kullanılır. Bellek ayırma perspektiften bakarsanız diziler, numaralandırma yok. Bu sadece daha fazla verinin ardından veri bulunuyor, diğer taraftan gelen nesneleri isimlerle özelliklere sahip ve veriler bu nedenle de doğru özellik adları geçmesi gerekir gibi nesne kodlamak için, özelliklerine atanır. Ama dizi için hep 0 olacak çünkü, dizinleri belirtmek gerekmez .. n, n dizinin uzunluğu nerede - 1, önemli olan tek şey, verilerin sırasıdır.

$array = array("a","b","c");
json_encode($array); // ["a","b","c"]
json_encode($array, JSON_FORCE_OBJECT); // {"0":"a", "1":"b","2":"c"}

Hiçbir özellik adları geliştirici (sadece veri) tarafından verilen bu yana encoder özelliği gibi bir dizi indeksler kullanan, bir özelliğine atamak gerekir obeject veri atamak çünkü JSON_FORCE_OBJECT it "0,1,2" kullanmak için foces nedenidir isimler, bu mantıklı olur sadece isimler çünkü.

Note: according to PHP manual seçenekleri parametreler PHP 5.3 'ten sadece kullanılabilir.

* Eski PHP sürümleri dizinleri kullanmak json_encode yapmak için bir yol chelmertz cevabı bakın. *

Bamya dediği gibi, JS tarafında hiç önemli değildir. Içine PHP zorlamak için, bu deneyin:

$a = new stdClass();
$a->{0} = "Kum";
$a->{1} = "Kumpel";
echo json_encode($a);

Bu kullanışlı değil, ben dizi gösterimi ile sopa istiyorum.

Sadece bir nesne olarak döküm ve iyi çalışır ... JSON_FORCE_OBJECT parametre tam olarak aynı şeyi yapar.

json_encode((object)$array);

Eğer php değerlerini erişebilmesi için bir php diziye geri dönüştürmek unutmayın:

$array = (object)$array;
$array = (array)$array;

json_encode($array);

Sadece sayısal tuşları ile bir PHP dizi yaşıyorsanız yana, bir JavaScript nesnesi kullanmaya gerek yoktur. Eğer bir ihtiyaç varsa Ancak, Maiku Mori’s suggestion deneyin.