Penyahkodan JSON dalam PHP selalunya menghasilkan objek dengan sifat yang mempunyai nama yang tidak sah. Ketidakkonsistenan ini menyukarkan untuk mengakses sifat ini menggunakan sintaks objek standard.
Sifat dengan nama pembolehubah yang sah boleh diakses menggunakan titik tatatanda:
$data = '{ "name": "John Doe" }'; $obj = json_decode($data); echo $obj->name; // Output: John Doe
Mengakses sifat dengan integer atau nama tidak sah lain bukanlah semudah itu. PHP mempunyai beberapa ciri yang boleh menyebabkan ralat:
$data = '{ "42": "The Answer" }'; $obj = json_decode($data); echo $obj->{'42'}; // Output: The Answer
$data = '{ "123": "Three Digits" }'; $obj = json_decode($data); echo $obj->{'123'}; // Error: syntax error
$obj = new stdClass; $obj->{'123'} = 'Three Digits'; echo $obj->{'123'}; // Output: Three Digits
Untuk mengakses hartanah dengan nama yang tidak sah, pertimbangkan ini pilihan:
$obj = json_decode($data); $arr = (array) $obj->highlighting; $value = $arr['448364']['Data']['0'];
function recursive_cast_to_array($obj) { $arr = (array) $obj; foreach ($arr as &$value) { if (is_object($value)) { $value = recursive_cast_to_array($value); } } return $arr; } $arr = recursive_cast_to_array($obj); $value = $arr['highlighting']['448364']['Data']['0'];
$arr = json_decode(json_encode($obj), true); $value = $arr['highlighting']['448364']['Data']['0'];
Perhatikan bahawa fungsi JSON memerlukan pengekodan UTF-8 untuk semua rentetan.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Sifat Objek dengan Nama Tidak Sah atau Integer dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!