Memahami Pengekodan JSON bagi Tatasusunan Jarang
Dalam pengekodan JSON, tatasusunan jarang (tatasusunan dengan nilai indeks yang tiada) ialah anomali. Ini kerana sintaks tatasusunan JSON tidak menyokong indeks, menjadikannya mustahil untuk mewakili tatasusunan sedemikian secara langsung.
Soalan:
Mengapa json_encode mengekod tatasusunan jarang sebagai JSON objek bukannya an tatasusunan?
Jawapan:
Gelagat json_encode dengan tatasusunan jarang berpunca daripada ketidakupayaan JSON untuk menyatakan tatasusunan sedemikian. Apabila json_encode menemui tatasusunan yang jarang, ia menggunakan pengekodannya sebagai objek JSON untuk mengekalkan pasangan nilai kunci tatasusunan.
Contoh:
Pertimbangkan PHP kod:
$a = array( new stdclass, new stdclass, new stdclass ); $a[0]->abc = '123'; $a[1]->jkl = '234'; $a[2]->nmo = '567'; echo json_encode($a) . "\n"; unset($a[1]); echo json_encode($a) . "\n";
Output:
[{"abc":"123"},{"jkl":"234"},{"nmo":"567"}] {"0":{"abc":"123"},"2":{"nmo":"567"}}
Penjelasan:
Penyelesaian:
Untuk mengelakkan pengekodan tatasusunan jarang sebagai objek, anda boleh menggunakan array_values($a) untuk mendapatkan tatasusunan diindeks semula tanpa sebarang lubang. json_encode kemudiannya akan mengekod ini dengan betul sebagai tatasusunan JSON.
Atas ialah kandungan terperinci Mengapakah `json_encode` Menukar Tatasusunan Jarang kepada Objek JSON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!