PHP の Json は、一部の経験豊富な開発者にとっては非常に一般的なものです。 PHP で json データを処理する場合、多くの場合、キーと値のペアの処理など、配列に対していくつかの操作を使用する必要があります。しかし、場合によっては、json データの非配列構造を処理する場合に、キーをどのように指定すればよいでしょうか?
まず、PHP での JSON データ処理の基本をいくつか見てみましょう。
PHP での json の処理は、通常、PHP 配列から json 文字列への変換と、json 文字列から PHP 配列への変換の 2 つの方向に分かれています。
まず、配列から json への変換を見てみましょう。 PHP には、PHP 配列を json 形式の文字列に変換できる非常に便利な関数 json_encode
があります。
たとえば、次の配列があるとします:
$arr = array("name" => "Tom", "age" => 28, "gender" => "male");
この配列を json に変換したい場合は、次のように記述できます:
$jsonStr = json_encode($arr); echo $jsonStr;
出力結果:
{"name":"Tom","age":28,"gender":"male"}
ここで、元の PHP 配列が json 形式の文字列に正常に変換されたことがわかります。同時に、JSON データがキーと値のペア構造であることもわかります。
次に、jsonを配列に変換する様子を見てみましょう。 PHP には、json 形式の文字列を PHP 配列に変換できる非常に便利な関数 json_decode
があります。
たとえば、次の json データがあるとします (前の例で生成された json 文字列をファイル data.json
に保存すると仮定します):
{"name":"Tom","age":28,"gender":"male"}
Ifこの json データを読み取って PHP 配列に変換したいので、次のように記述します:
$jsonStr = file_get_contents("data.json"); $arr = json_decode($jsonStr, true); var_dump($arr);
出力結果:
array(3) { ["name"] => string(3) "Tom" ["age"] => int(28) ["gender"] => string(4) "male" }
元の json 形式の文字列が変換されていることがわかります。無事にPHP配列に変換されました。
さらに、値の 1 つだけを取得する必要がある場合は、通常、次のようなメソッドを使用して、配列のキーを使用して対応する値を取得します。
echo $arr['name']; // 输出 Tom
ただし、最初の質問に戻る: 読み取った json データ構造が次のとおりであると仮定します:
{ "status":1, "data":{ "name":"Tom", "age":28, "gender":"male" } }
このとき、name
の値を取り出したい場合、どうすればよいでしょうか。 ?
通常は、次のようなコードを考えます:
$jsonStr = file_get_contents("data.json"); $arr = json_decode($jsonStr, true); echo $arr['data']['name'];
ただし、このようなコードでは Notice エラーが発生します:
Notice: Unknown Index: data in ...
これは、PHP が $arr
を配列であると認識しているためですが、data
に JSON データ内の配列のようにアクセスしようとすると、. として認識されてしまいます。配列ではなく文字列です。
この問題を解決するには、$arr->data->name
を使用してキーを指定する必要があります:
$jsonStr = file_get_contents("data.json"); $obj = json_decode($jsonStr); echo $obj->data->name;
これにより、正しく行うことができます。出力: トム
。ここで、作成するオブジェクトの型は stdClass
であり、配列型ではないため、キーを指定するには $obj->data->name
を使用する必要があることに注意してください。
要約すると、非配列構造の JSON データを処理する場合は、配列の代わりにオブジェクトを使用する必要があります。同時に、このメソッドを使用して非配列構造の JSON データを走査することもできます。
以上がPHPでJSONデータを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。