ホームページ >バックエンド開発 >PHPの問題 >PHPで1次元配列を2次元配列に変換する

PHPで1次元配列を2次元配列に変換する

王林
王林オリジナル
2023-05-23 11:10:371281ブラウズ

PHP では、1 次元配列を 2 次元配列に変換する必要が生じることがあります。たとえば、大量のデータを含む 1 次元配列を処理する必要がある場合、データは特定のルールに従ってグループ化する必要があるため、この場合は 1 次元配列を 2 次元配列に変換する必要があります。配列。

次に、1次元配列を2次元配列に変換する方法を紹介します。

方法 1: for ループを使用する

まず、for ループを使用して 1 次元配列を走査し、データのグループ化に従って新しい 2 次元配列にデータを追加します。 。この方法は比較的簡単ですが、いくつかの変数を手動でメンテナンスする必要があり、面倒です。

実装コードは次のとおりです。

<?php

// 定义一维数组
$arr = array(
    array("name" => "Tom", "age" => 18, "sex" => "male"),
    array("name" => "Jerry", "age" => 20, "sex" => "female"),
    array("name" => "Lucy", "age" => 21, "sex" => "female"),
    array("name" => "Bob", "age" => 22, "sex" => "male")
);

// 新的二位数组
$newArr = array();

// 遍历一维数组
for ($i = 0; $i < count($arr); $i++) {
    $sex = $arr[$i]["sex"];
    $newArr[$sex][] = $arr[$i];
}

// 打印结果
print_r($newArr);

実行結果は次のとおりです。

Array
(
    [male] => Array
        (
            [0] => Array
                (
                    [name] => Tom
                    [age] => 18
                    [sex] => male
                )

            [1] => Array
                (
                    [name] => Bob
                    [age] => 22
                    [sex] => male
                )

        )

    [female] => Array
        (
            [0] => Array
                (
                    [name] => Jerry
                    [age] => 20
                    [sex] => female
                )

            [1] => Array
                (
                    [name] => Lucy
                    [age] => 21
                    [sex] => female
                )

        )

)

方法 2: array_reduce 関数を使用します。

array_reduce 関数PHP では配列を渡すことができます。カスタム関数はその値を繰り返し組み合わせて 1 つの値を作成します。 array_reduce 関数を使用すると、1 次元配列を 2 次元配列に変換できます。

実装コードは次のとおりです。

<?php

// 定义一维数组
$arr = array(
    array("name" => "Tom", "age" => 18, "sex" => "male"),
    array("name" => "Jerry", "age" => 20, "sex" => "female"),
    array("name" => "Lucy", "age" => 21, "sex" => "female"),
    array("name" => "Bob", "age" => 22, "sex" => "male")
);

// 使用 array_reduce 函数
$newArr = array_reduce($arr, function($carry, $item) {
    $sex = $item["sex"];
    if (!isset($carry[$sex])) {
        $carry[$sex] = array();
    }
    $carry[$sex][] = $item;
    return $carry;
}, array());

// 打印结果
print_r($newArr);

実行結果は方法 1 と同じです。

方法 3: array_map 関数を使用する

PHP の array_map 関数は、1 つ以上の配列の各要素を処理のためにコールバック関数に渡し、処理された結果を返すことができます。 for ループの使用を避けるようにしてください。

実装コードは次のとおりです。

<?php

// 定义一维数组
$arr = array(
    array("name" => "Tom", "age" => 18, "sex" => "male"),
    array("name" => "Jerry", "age" => 20, "sex" => "female"),
    array("name" => "Lucy", "age" => 21, "sex" => "female"),
    array("name" => "Bob", "age" => 22, "sex" => "male")
);

// 使用 array_map 函数
$newArr = array_map(function($item) {
    $sex = $item["sex"];
    return array($sex => $item);
}, $arr);

// 将处理后的二维数组进行合并
$newArr = call_user_func_array("array_merge", $newArr);

// 打印结果
print_r($newArr);

演算結果は方法 1 と方法 2 と同じです。

まとめ

この記事では、for ループ、array_reduce 関数、array_map 関数を使用して、1 次元配列を 2 次元配列に変換する 3 つの方法を紹介しました。

これらの方法にはすべて長所と短所があるため、実際の状況に応じてどの方法を選択するかを検討する必要があります。ただし、一般的には、array_reduce 関数と array_map 関数を使用する方がより簡潔で洗練されています。

以上がPHPで1次元配列を2次元配列に変換するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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