PHP で JSON データを操作する場合、整数または無効な名前のプロパティを持つオブジェクトが発生する可能性があります。変数名。これにより、標準のドット表記を使用してこれらのプロパティにアクセスすることが困難になる可能性があります。
次の例を考えてみましょう。ここでは、JSON オブジェクトが json_decode():
$myVar = json_decode($data);
[highlighting] => stdClass Object ( [448364] => stdClass Object ( [Data] => Array ( [0] => Tax amount liability is ....... ) ) )
print $myVar->highlighting->448364->Data->0;
オプション 1: 手動キャスト
プロパティにアクセスするには、次のことができます。 (array)$object を使用して、オブジェクトを手動で配列に変換します。これにより、配列キーとして数値プロパティにアクセスできるようになります。$highlighting = (array)$myVar->highlighting; $data = (array)$highlighting['448364']->Data; $value = $data['0'];
オプション 2: 中かっこ構文
別の方法は、中かっこ構文を使用して、物件にアクセスします。ただし、これはプロパティ名が完全に数値でない場合にのみ機能します。echo $myVar->highlighting->{'448364'}->Data->0; // OK! echo $myVar->highlighting->{'123'}->Data->0; // Error!
オプション 3: 再帰キャスト関数
より堅牢なアプローチは、カスタムのオブジェクトを再帰的に配列に変換する関数: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'];
オプション4: JSON 関数の使用
もう 1 つのオプションは、組み込みの JSON 関数を使用してオブジェクトを配列に再帰的に変換することです。$arr = json_decode(json_encode($myVar), true); $value = $arr['highlighting']['448364']['Data']['0'];
以上がPHP で数値または無効な名前を含むオブジェクトのプロパティにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。