Rumah > Artikel > pembangunan bahagian belakang > Mengapa json_decode() Throw \"Tidak boleh menggunakan objek jenis stdClass sebagai tatasusunan\"?
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!