ホームページ >バックエンド開発 >PHPチュートリアル >json_decode() が「stdClass 型のオブジェクトを配列として使用できません」をスローするのはなぜですか?
エラー「stdClass 型のオブジェクトを配列として使用できません」: Json デコードの難題
json_decode() を使用して JSON データを操作する場合関数を実行すると、「stdClass 型のオブジェクトを配列として使用できません」という謎のエラーが発生する場合があります。このエラーは、デコードしている JSON データが配列として構造化されている場合でも、 json_decode() がデフォルトで配列ではなくオブジェクトを返すという事実に起因します。
この問題を修正し、へのアクセスを有効にするには配列要素では、json_decode() 関数の 2 番目のパラメーターを利用できます。このパラメータを true に設定すると、オブジェクトではなく配列を返すように関数に指示します。
たとえば、次のコードを考えてみましょう。
$data = '{"context": "some value"}'; $result = json_decode($data);
このシナリオでは、$result は次のようになります。がオブジェクトであり、その "context" プロパティに配列としてアクセスしようとすると ($result['context'] など)、前述のエラーが発生します。
エラーを解決して配列値を読み取るには、次のようなコードです:
$result = json_decode($data, true);
2 番目の引数として true を渡すと、json_decode() は代わりに配列を作成し、期待どおりにその「コンテキスト」要素にアクセスできるようになります:
$context = $result['context'];
以上がjson_decode() が「stdClass 型のオブジェクトを配列として使用できません」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。