使用PHP 存取具有無效或數字屬性名稱的物件
嘗試使用PHP 中的json_decode() 函數解析JSON 資料時,您解析可能會在存取名稱為整數的屬性時遇到困難,或無法遵守有效的變數命名約定。此行為源自於 PHP 在處理具有此類屬性的物件時的固有限制。
限制和怪癖
解
解#1:手動型別轉換
手動將物件轉換為數組以陣列訪問無效的屬性名稱:
$a = array('123' => '123', '123foo' => '123foo'); $o = (object) $a; $a = (array) $o; echo $a['123']; // OK!
解#2:核選項
使用遞歸函數將物件轉換為陣列:
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'];
解#3:JSON函數
利用內建JSON 函數遞歸轉換為陣列:
$arr = json_decode(json_encode($myVar), true); $value = $arr['highlighting']['448364']['Data']['0'];
在選擇最適合您要求的解決方案之前,請務必考慮每種解決方案的缺點。例如,解決方案 #2 和 #3 執行不必要的陣列轉換,而解決方案 #3 也要求字串屬性以 UTF-8 進行編碼。
以上是如何使用「json_decode()」在 PHP 中存取具有無效或數字屬性名稱的物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!