Rumah >pembangunan bahagian belakang >tutorial php >Mengapa json_decode() Throw \'Tidak boleh menggunakan objek jenis stdClass sebagai tatasusunan\'?

Mengapa json_decode() Throw \'Tidak boleh menggunakan objek jenis stdClass sebagai tatasusunan\'?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-17 08:06:031012semak imbas

Why Does json_decode() Throw

Ralat "Tidak boleh menggunakan objek jenis stdClass sebagai tatasusunan": A Json Decoding Conundrum

Apabila bekerja dengan data JSON menggunakan json_decode() fungsi, anda mungkin menghadapi ralat misteri yang berbunyi: "Tidak boleh menggunakan objek jenis stdClass sebagai tatasusunan". Ralat ini berpunca daripada fakta bahawa json_decode() secara lalai mengembalikan objek dan bukannya tatasusunan, walaupun data JSON yang anda nyahkod mungkin distrukturkan sebagai tatasusunan.

Untuk membetulkan isu ini dan mendayakan akses kepada elemen tatasusunan, anda boleh memanfaatkan parameter kedua fungsi json_decode(). Dengan menetapkan parameter ini kepada benar, anda mengarahkan fungsi untuk mengembalikan tatasusunan dan bukannya objek.

Sebagai contoh, pertimbangkan kod berikut:

$data = '{"context": "some value"}';
$result = json_decode($data);

Dalam senario ini, $result akan menjadi objek, dan cuba mengakses sifat "konteks"nya sebagai tatasusunan, cth., $result['context'], akan mencetuskan ralat yang disebutkan di atas.

Untuk menyelesaikan ralat dan membaca nilai tatasusunan, ubah suai kod seperti berikut:

$result = json_decode($data, true);

Dengan menghantar benar sebagai argumen kedua, json_decode() akan mencipta tatasusunan dan anda akan dapat mengakses elemen "konteks"nya seperti yang dijangkakan:

$context = $result['context'];

Atas ialah kandungan terperinci Mengapa json_decode() Throw \'Tidak boleh menggunakan objek jenis stdClass sebagai tatasusunan\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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