Menggunakan PHP untuk Mengakses Objek dengan Nama Harta Tidak Sah atau Berangka
Apabila cuba menggunakan fungsi json_decode() dalam PHP untuk menghuraikan data JSON , anda mungkin menghadapi kesukaran mengakses sifat dengan nama yang integer atau gagal mematuhi penamaan pembolehubah yang sah konvensyen. Tingkah laku ini berpunca daripada batasan sedia ada PHP dalam mengendalikan objek dengan sifat sedemikian.
Limitation and Quirks
Penyelesaian
Penyelesaian #1: Taip Manual
Hantar objek secara manual ke tatasusunan untuk mengakses sifat yang tidak sah nama:
$a = array('123' => '123', '123foo' => '123foo'); $o = (object) $a; $a = (array) $o; echo $a['123']; // OK!
Penyelesaian #2: Pilihan Nuklear
Gunakan fungsi rekursif untuk menukar objek kepada tatasusunan:
function recursive_cast_to_array($o) { $a = (array) $o; foreach ($a as &$value) { if (is_object($value)) { $value = recursive_cast_to_array($value); } } return $a; } $arr = recursive_cast_to_array($myVar); $value = $arr['highlighting']['448364']['Data']['0'];
Penyelesaian #3: Fungsi JSON
Gunakan JSON terbina dalam berfungsi untuk penukaran rekursif kepada tatasusunan:
$arr = json_decode(json_encode($myVar), true); $value = $arr['highlighting']['448364']['Data']['0'];
Adalah penting untuk mempertimbangkan kelemahan setiap penyelesaian sebelum memilih penyelesaian yang paling sesuai dengan keperluan anda. Sebagai contoh, Penyelesaian #2 dan #3 melakukan penukaran tatasusunan yang tidak perlu, manakala Penyelesaian #3 juga memerlukan sifat rentetan dikodkan dalam UTF-8.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Objek dengan Nama Harta Tidak Sah atau Berangka dalam PHP Menggunakan `json_decode()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!