ホームページ  >  記事  >  バックエンド開発  >  json_decode() が「stdClass 型のオブジェクトを配列として使用できません」をスローするのはなぜですか?

json_decode() が「stdClass 型のオブジェクトを配列として使用できません」をスローするのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-17 08:06:03937ブラウズ

Why Does json_decode() Throw

エラー「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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。