ホームページ >バックエンド開発 >PHPチュートリアル >PHP で「json_decode()」を使用して無効なプロパティ名または数値のプロパティ名を持つオブジェクトにアクセスするにはどうすればよいですか?
PHP を使用して無効なプロパティ名または数値のプロパティ名を持つオブジェクトにアクセスする
PHP で json_decode() 関数を使用して JSON データを解析しようとする場合、整数の名前を持つプロパティへのアクセスが困難になったり、有効な変数の名前付けが守られなかったりする可能性があります。慣例。この動作は、そのようなプロパティを持つオブジェクトを処理する際の PHP 固有の制限に起因します。
制限事項と特徴
解決策
解決策 #1: 手動型キャスト
オブジェクトを配列に手動でキャストしてプロパティにアクセスします無効な名前:
$a = array('123' => '123', '123foo' => '123foo'); $o = (object) $a; $a = (array) $o; echo $a['123']; // OK!
解決策 2: Nuclear オプション
再帰関数を使用してオブジェクトを配列に変換します:
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'];
解決策 #3: JSON関数
配列への再帰変換には組み込みの JSON 関数を利用します:
$arr = json_decode(json_encode($myVar), true); $value = $arr['highlighting']['448364']['Data']['0'];
要件に最も適したソリューションを選択する前に、各ソリューションの欠点を考慮することが重要です。たとえば、解決策 #2 と #3 では不要な配列変換が実行されますが、解決策 #3 ではさらに文字列プロパティを UTF-8 でエンコードする必要があります。
以上がPHP で「json_decode()」を使用して無効なプロパティ名または数値のプロパティ名を持つオブジェクトにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。