2011-01-30 24 views
10

Ben isim kodlanmamış Neden ben buPHP dizisinden json_encode() `anahtarlarını nasıl yaparım?

[1691864,7944458,9274078,1062072,8625335,8255371,5476104,6145446,7525604,5947143] 

gibi bir şey olsun json_encode($thearray) Eğer bu

Array ([0] => 1691864 [1] => 7944458 [2] => 9274078 [3] => 1062072 [4] => 8625335 [5] => 8255371 [6] => 5476104 [7] => 6145446 [8] => 7525604 [9] => 5947143) 

gibi yazdırır bir dizi var (örneğin 0, 1, 2, 3 vb)? ve json kodunda görünmesini sağlamak için nasıl yapmalıyım? Bu dizinin sadece bir indeksi olan için tam kod

$ie = 0; 
    while($ie 10) 
    { 
    $genid = rand(1000000,9999999); 
    $temp[$ie] = $genid ; 
    $ie++; 
    } 
    print_r($temp); 

    $temp_json = json_encode($temp); 
    print_r($temp_json); 

cevap

31

Bunu json_encode zorlayabilir Eğer JSON_FORCE_OBJECT seçeneği ayarlayarak sayısal anahtarlar ile bir dizi geçiyoruz rağmen bir nesneyi kullanır:

{"0":1691864,"1":7944458,"2":9274078,"3":1062072,"4":8625335,"5":8255371,"6":5476104,"7":6145446,"8":7525604,"9":5947143} 

Ancak, yalnızca bir nesne gerçekten gerekliyse bunu yapmalısınız.

+1

'JSON_FORCE_OBJECT', bu parametreyi kullanarak herhangi bir düşüşü bilmiyor muydunuz? Oy verildi ~ Ty –

0

altındadır. Her bir öğeye bir çeşit isim eklemek isterseniz, ilişkisel bir dizi kullanmanız gerekir.

böylece geri 0, 1, 2, 3 vb

0

Bu kadar çıkacaktır olsa JSON dizisi davranışı tanımlandığını deşifre. Gösterdiğiniz dizi, ilişkisel olmayan, normalde dizinlenmiş bir dizidir. Dizinleri örtülü olarak sayısaldur.

PHP veya JavaScript dizi deşifre varsa dizini kullanarak öğelerine erişmek mümkün olacak: Bu yerine

$temp_array = json_decode($temp_json); 

echo $temp_array[2]; // 9274078 
5

Kullanım:

json_encode((object)$temp) 

Bu nesnesine diziyi dönüştürür JSON kodlu olduğunda, tuşları gösterecektir. Bir veri dizisi saklıyorsanız, sayıdan başka bir numaraya eşleme değil, diziyi kullanmanız gerekir. Sonra döndürülen değer Sayısal tuşlarla bir JSON nesnesi olacak

json_encode($thearray, JSON_FORCE_OBJECT) 

: