「通知: 非オブジェクトのプロパティを取得しようとしています」エラー: 洞察と解決策
次の API からデータを取得しようとしたとき「http://api.convoytrucking.net/api.php?api_key=public&show=player&player_name=Mick_Gibson」で、次のコードを使用すると、「 Notice: Trying to get property of non-object (非オブジェクトのプロパティを取得しようとしています)」エラーが発生する可能性があります:
<? $js = file_get_contents('http://api.convoytrucking.net/api.php?api_key=public&show=player&player_name=Mick_Gibson'); $pjs = json_decode($js); var_dump($pjs->{'player_name'}); ?>
エラーの原因:
このエラーは、$pjs が予期されたオブジェクトそのものではなく、単一のオブジェクトを含む配列であるために発生します。コードの 9 行目は、$pjs のプロパティ (player_name) に直接アクセスしようとします。これはオブジェクトではなく配列です。
解決策:
これを解決するにはこの問題を解決するには、最初にオブジェクト ($pjs[0]) を含む配列要素にアクセスし、次に目的のオブジェクト属性にアクセスします:
echo $pjs[0]->player_name;
詳細な説明:
var_dump($pjs) の結果から、$pjs は 1 つの要素を持つ配列であり、さまざまなプレイヤー データを含むオブジェクトであることがわかります。 player_name プロパティにアクセスするには、まず配列インデックス (この場合は 0) を指定し、次に結果のオブジェクトの目的のプロパティにアクセスする必要があります。
コードを次のように更新すると、正しく取得されます。 player_name プロパティ:
echo $pjs[0]->player_name;
以上がAPI データにアクセスする際の「注意: 非オブジェクトのプロパティを取得しようとしています」エラーを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。