ホームページ >バックエンド開発 >PHPの問題 >PHPで複数のオブジェクト配列をJSONオブジェクト配列に変換する方法

PHPで複数のオブジェクト配列をJSONオブジェクト配列に変換する方法

PHPz
PHPzオリジナル
2023-04-23 10:19:39551ブラウズ

PHP 開発では、特にフロントエンドと対話するときに、文字列配列を JSON オブジェクトに変換する必要があることがよくあります。ただし、複数のオブジェクト配列を JSON オブジェクト配列に変換する必要がある状況に遭遇することがあります。この記事では、複数のオブジェクト配列を JSON オブジェクト配列に変換する方法について詳しく説明します。

1. 文字列をオブジェクト配列に変換する

PHP では、json_decode() 関数を使用して、JSON 形式の文字列をオブジェクト配列に変換できます。サンプル コードは次のとおりです。

$jsonStr = '{"name": "Tom", "age": 20}';
$jsonArr = json_decode($jsonStr, true);
var_dump($jsonArr);

出力は次のとおりです。

array(2) {
    ["name"]=>
    string(3) "Tom"
    ["age"]=>
    int(20)
}

json_decode() 関数を使用する場合、2 番目のパラメーターが true の場合、JSON 形式の文字列を次のように変換します。連想配列、それ以外の場合はオブジェクトに変換されます。

2. オブジェクト配列を JSON オブジェクト配列に変換する

まず、JSON オブジェクト配列の形式を明確にする必要がありますが、通常は複数の JSON オブジェクトで構成される配列です。各 JSON オブジェクトには、複数のキーと値のペアが含まれています。例は次のとおりです。

[
    {"name": "Tom", "age": 20},
    {"name": "Jerry", "age": 18},
    {"name": "Emma", "age": 25}
]

それでは、PHP の複数のオブジェクト配列を上記の JSON オブジェクト配列に変換するにはどうすればよいでしょうか?これはループを使用して行うことができます。

サンプルコードは以下の通りです:

//对象数组1
$objArr1 = [
    ["name" => "Tom", "age" => 20],
    ["name" => "Jerry", "age" => 18]
];
//对象数组2
$objArr2 = [
    ["name" => "Emma", "age" => 25],
    ["name" => "Lily", "age" => 22]
];

//JSON对象数组
$jsonArr = [];
foreach ($objArr1 as $item) {
    $jsonArr[] = json_decode(json_encode($item));
}
foreach ($objArr2 as $item) {
    $jsonArr[] = json_decode(json_encode($item));
}

//输出JSON对象数组
echo json_encode($jsonArr);

上記のコードを説明すると、まず、2つのPHPオブジェクト配列$objArr1と$objArr2を定義します。次に、空の JSON オブジェクト配列 $jsonArr を定義し、ループを使用して $objArr1 と $objArr2 の各オブジェクトを JSON オブジェクトに変換し、$jsonArr に追加します。最後に、 json_encode() 関数を使用して $jsonArr を JSON 形式の文字列出力に変換し、必要な JSON オブジェクト配列を取得します。

3. 複数のオブジェクト配列をオブジェクト配列配列に変換する

場合によっては、複数のオブジェクト配列を、結合された JSON オブジェクトの 1 つの配列ではなく、1 つのオブジェクト配列配列に変換する必要があります。この時点で必要なのは、ループ内の各オブジェクト配列をオブジェクト配列に変換し、それらを配列に追加することだけです。

サンプル コードは次のとおりです:

//对象数组1
$objArr1 = [
    ["name" => "Tom", "age" => 20],
    ["name" => "Jerry", "age" => 18]
];
//对象数组2
$objArr2 = [
    ["name" => "Emma", "age" => 25],
    ["name" => "Lily", "age" => 22]
];

//对象数组数组
$objArrArr = [];
foreach ($objArr1 as $item) {
    $objArrArr[] = json_decode(json_encode($item));
}
foreach ($objArr2 as $item) {
    $objArrArr[] = json_decode(json_encode($item));
}

//输出对象数组数组
var_dump($objArrArr);

出力は次のとおりです:

array(4) {
    [0]=>
    object(stdClass)#1 (2) {
        ["name"]=>
        string(3) "Tom"
        ["age"]=>
        int(20)
    }
    [1]=>
    object(stdClass)#2 (2) {
        ["name"]=>
        string(5) "Jerry"
        ["age"]=>
        int(18)
    }
    [2]=>
    object(stdClass)#3 (2) {
        ["name"]=>
        string(4) "Emma"
        ["age"]=>
        int(25)
    }
    [3]=>
    object(stdClass)#4 (2) {
        ["name"]=>
        string(4) "Lily"
        ["age"]=>
        int(22)
    }
}

上記のコードでは、2 つのオブジェクト配列 $objArr1 と $objArr2 を定義します。空のオブジェクト配列 array $objArrArr を定義します。次にループして、$objArr1 と $objArr2 の各オブジェクトをオブジェクト配列に変換し、それらを $objArrArr に追加します。最後に、$objArrArr を出力して、必要なオブジェクト配列配列を取得します。

概要

この記事では、複数のオブジェクト配列を JSON オブジェクト配列とオブジェクト配列配列に変換する方法を主に紹介します。 JSON変換を行う際は、json_decode()関数の第2パラメータに注意する必要があり、通常はtrueを使用してJSON形式の文字列を連想配列に変換することを推奨します。ループ変換を使用する場合は、各オブジェクトを JSON オブジェクトまたはオブジェクトの配列に変換し、それらを配列に追加することに注意する必要があります。

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

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