PHPでJSONデータを処理する方法

PHPz
リリース: 2023-04-12 10:30:20
オリジナル
939 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート