首頁  >  文章  >  後端開發  >  為什麼 json_decode() 會拋出「無法使用 stdClass 類型的物件作為陣列」?

為什麼 json_decode() 會拋出「無法使用 stdClass 類型的物件作為陣列」?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-17 08:06:03932瀏覽

Why Does json_decode() Throw

錯誤「無法使用stdClass 類型的物件作為陣列」:Json 解碼難題

使用json_decode() 處理JSON 資料時,JSON 資料時,JSON 資料時,JSON 資料時,JSON 資料時,您可能會遇到一個神秘的錯誤:「無法將stdClass 類型的物件用作陣列」。此錯誤源自於以下事實: json_decode() 預設會傳回一個物件而不是數組,即使您正在解碼的 JSON 資料可能被建構為數組。

要修正此問題並啟用對數組元素,您可以利用 json_decode() 函數的第二個參數。透過將此參數設為 true,您可以指示函數傳回數組而不是物件。

例如,考慮以下程式碼:

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

在這種情況下,$result 將是一個對象,並嘗試以數組形式存取其「context」屬性,例如$result[ 'context'],將觸發上述錯誤。

要解決該錯誤並讀取數組值,請修改代碼如下:

$result = json_decode($data, true);

透過傳遞true 作為第二個參數,json_decode() 將建立一個數組,您將能夠按預期存取其「上下文」元素:

$context = $result['context'];

以上是為什麼 json_decode() 會拋出「無法使用 stdClass 類型的物件作為陣列」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn