Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah `json_encode` Menukar Tatasusunan Jarang kepada Objek JSON?

Mengapakah `json_encode` Menukar Tatasusunan Jarang kepada Objek JSON?

Susan Sarandon
Lepaskan: 2024-11-25 08:55:12
asal
827 orang telah melayarinya

Why Does `json_encode` Convert Sparse Arrays to JSON Objects?

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";
Salin selepas log masuk

Output:

[{"abc":"123"},{"jkl":"234"},{"nmo":"567"}]
{"0":{"abc":"123"},"2":{"nmo":"567"}}
Salin selepas log masuk

Penjelasan:

  • Dalam pengekodan pertama, tatasusunan jarang diwakili sebagai tatasusunan JSON yang sah dengan tiga objek.
  • Selepas menyahsetkan indeks 1, tatasusunan jarang mengandungi lubang, yang memaksa json_encode menukarnya kepada objek JSON untuk mengekalkan perkaitan antara kunci dan nilai.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan