目次
前提知識
JSON
PHP の配列
PHP の stdClass オブジェクト
Json を配列に変換する
Json をオブジェクト配列に変換する
Json が多次元配列に変換されました
概要
ホームページ バックエンド開発 PHPの問題 PHPでJSONデータを配列オブジェクトに変換する方法

PHPでJSONデータを配列オブジェクトに変換する方法

Apr 23, 2023 am 09:08 AM

開発プロセスでは、JSON データを配列またはオブジェクト配列に変換するシナリオが頻繁に発生します。人気のあるサーバー側プログラミング言語として、PHP は、JSON データを処理するときに変換操作を実行する便利なメソッドも提供します。この記事では、例を使用して、JSON データを配列オブジェクトの配列に変換する方法を示します。

前提知識

具体的な操作を説明する前に、PHP の基本的な知識を理解する必要があります。

JSON

JSON (JavaScript Object Notation の略) は、軽量のデータ交換形式です。データをキーと値のペアまたは配列形式として表します。 JSON データは、JavaScript のオブジェクトと配列を使用して表現できます。

PHP の配列

PHP では、配列はデータを収集する構造です。さまざまなタイプの値を格納できます。配列では、各値にキーが関連付けられており、キーには任意の文字列または整数を使用できます。

PHP の stdClass オブジェクト

stdClass オブジェクトは、PHP の非常に単純なオブジェクト モデルです。必要に応じてプロパティを動的に割り当てることができます。さらに、オブジェクトを配列に変換したり、配列を次のように変換したりすることもできます。オブジェクト。JSON データを操作する場合に便利です。

Json を配列に変換する

まず、JSON データを PHP 配列に変換する方法を見てみましょう。 PHP には、JSON 文字列を PHP 配列に変換できる組み込み関数 json_decode() が用意されています。この関数の使用法は次のとおりです:

mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )
ログイン後にコピー

このうち、$json は変換する必要がある JSON 文字列を表し、$assoc は連想配列を返すかどうかを表します (デフォルトは false、つまり、オブジェクトが返されます); $ Depth は最大再帰深さを表します (デフォルトは 512); $options は変換オプションを表します (デフォルトは 0)。

これは、JSON データを含むファイルがあると仮定した簡単な例です。data.json:

{
    "name": "Typechoer",
    "age": 25,
    "gender": "male",
    "skills": ["PHP", "JavaScript", "CSS"]
}
ログイン後にコピー

次のコードを使用して、JSON データを読み取ることができます。

$json = file_get_contents('data.json');
$data = json_decode($json, true);
print_r($data);
ログイン後にコピー
ログイン後にコピー

出力結果は以下の通りです:

Array
(
    [name] => Typechoer
    [age] => 25
    [gender] => male
    [skills] => Array
        (
            [0] => PHP
            [1] => JavaScript
            [2] => CSS
        )
)
ログイン後にコピー
ログイン後にコピー

ご覧のとおり、JSONデータをPHP配列に変換する操作を実装しました。のデータは変更されません。

Json をオブジェクト配列に変換する

JSON データを PHP 配列に変換するだけでなく、オブジェクト配列に変換することもできます。オブジェクト配列は stdClass オブジェクトの配列であり、各オブジェクトは要素を表します。オブジェクトのフィールド名を気にする必要はなく、オブジェクトのプロパティを通じてアクセスするだけで済みます。以下は、JSON データを PHP オブジェクトの配列に変換するメソッドです:

json_decode(string, false, 512, JSON_OBJECT_AS_ARRAY);
ログイン後にコピー

ご覧のとおり、$assoc パラメーターを false に設定し、$options パラメーターを JSON_OBJECT_AS_ARRAY に設定するだけです。 json_decode() 関数を使用します。変換操作を実行するだけです。

同様に、上記の JSON データに基づいて、次のコードを使用してそれを PHP オブジェクト配列に変換できます:

$json = file_get_contents('data.json');
$data = json_decode($json, false, 512, JSON_OBJECT_AS_ARRAY);
print_r($data);
ログイン後にコピー
ログイン後にコピー

出力結果は次のとおりです:

Array
(
    [name] => Typechoer
    [age] => 25
    [gender] => male
    [skills] => Array
        (
            [0] => PHP
            [1] => JavaScript
            [2] => CSS
        )
)
ログイン後にコピー
ログイン後にコピー

オブジェクト配列が使用されるため、オブジェクト プロパティを使用してデータにアクセスできます。たとえば、次のようになります。

echo $data[0]->name; // Typechoer
echo $data[0]->skills[2]; // CSS
ログイン後にコピー

Json が多次元配列に変換されました

サブオブジェクトまたは入れ子になった配列がある場合JSON データに変換し、PHP 配列またはオブジェクトに変換します。配列を使用する場合でも、データの多次元の性質を維持できます。

次は、入れ子構造の JSON データの例です:

{
    "account": {
        "name": "Tom",
        "age": 28
    },
    "courses": [
        {
            "name": "PHP",
            "hour": 80
        },
        {
            "name": "JavaScript",
            "hour": 60
        }
    ]
}
ログイン後にコピー

次のコードを使用して、それを PHP 配列に変換できます:

$json = file_get_contents('data.json');
$data = json_decode($json, true);
print_r($data);
ログイン後にコピー
ログイン後にコピー

出力結果

Array
(
    [account] => Array
        (
            [name] => Tom
            [age] => 28
        )

    [courses] => Array
        (
            [0] => Array
                (
                    [name] => PHP
                    [hour] => 80
                )

            [1] => Array
                (
                    [name] => JavaScript
                    [hour] => 60
                )

        )

)
ログイン後にコピー
ログイン後にコピー

同様に、PHP オブジェクト配列に変換することもできます:

$json = file_get_contents('data.json');
$data = json_decode($json, false, 512, JSON_OBJECT_AS_ARRAY);
print_r($data);
ログイン後にコピー
ログイン後にコピー

出力結果は次のとおりです:

Array
(
    [account] => Array
        (
            [name] => Tom
            [age] => 28
        )

    [courses] => Array
        (
            [0] => Array
                (
                    [name] => PHP
                    [hour] => 80
                )

            [1] => Array
                (
                    [name] => JavaScript
                    [hour] => 60
                )

        )

)
ログイン後にコピー
ログイン後にコピー

ご覧のとおり、多次元データの構造は保持されます。

概要

この記事では、JSON データを PHP 配列またはオブジェクト配列に変換する方法を紹介しました。 PHP の組み込み関数 json_decode() を使用すると、JSON データと PHP データの間で迅速に変換できます。開発で JSON データを扱う必要がある場合、この知識は間違いなく役に立ちます。

以上がPHPでJSONデータを配列オブジェクトに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPアレイの重複排除のためのベストプラクティスは何ですか PHPアレイの重複排除のためのベストプラクティスは何ですか Mar 03, 2025 pm 04:41 PM

PHPアレイの重複排除のためのベストプラクティスは何ですか

PHPアレイの重複排除は、キー名の一意性を利用できますか? PHPアレイの重複排除は、キー名の一意性を利用できますか? Mar 03, 2025 pm 04:51 PM

PHPアレイの重複排除は、キー名の一意性を利用できますか?

最新のPHPコーディング基準とベストプラクティスは何ですか? 最新のPHPコーディング基準とベストプラクティスは何ですか? Mar 10, 2025 pm 06:16 PM

最新のPHPコーディング基準とベストプラクティスは何ですか?

PHP拡張機能とPECLを使用するにはどうすればよいですか? PHP拡張機能とPECLを使用するにはどうすればよいですか? Mar 10, 2025 pm 06:12 PM

PHP拡張機能とPECLを使用するにはどうすればよいですか?

PHPにメッセージキュー(rabbitmq、redis)を実装する方法は? PHPにメッセージキュー(rabbitmq、redis)を実装する方法は? Mar 10, 2025 pm 06:15 PM

PHPにメッセージキュー(rabbitmq、redis)を実装する方法は?

PHPアレイの重複排除は、パフォーマンスの損失について考慮する必要がありますか? PHPアレイの重複排除は、パフォーマンスの損失について考慮する必要がありますか? Mar 03, 2025 pm 04:47 PM

PHPアレイの重複排除は、パフォーマンスの損失について考慮する必要がありますか?

PHPアレイの重複排除のための最適化手法は何ですか PHPアレイの重複排除のための最適化手法は何ですか Mar 03, 2025 pm 04:50 PM

PHPアレイの重複排除のための最適化手法は何ですか

リフレクションを使用してPHPコードを分析および操作する方法は? リフレクションを使用してPHPコードを分析および操作する方法は? Mar 10, 2025 pm 06:12 PM

リフレクションを使用してPHPコードを分析および操作する方法は?

See all articles