首頁 >後端開發 >PHP問題 >php 一維數組轉二維數組

php 一維數組轉二維數組

王林
王林原創
2023-05-23 11:10:371238瀏覽

在 PHP 中,有時會遇到將一個一維數組轉換成二維數組的需求。例如,我們可能需要處理一個包含許多資料的一維數組,但是這些資料需要按照某種規則分組,這時候就需要將一維數組轉換成二維數組。

接下來我們來介紹如何實作一維數組轉二維數組的方法。

方法一:使用 for 迴圈

首先,我們可以使用 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")
);

// 新的二位数组
$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
                )

        )

)

方法二:使用array_reduce 函數

PHP 中的array_reduce 函數可以將一個陣列通過自訂函數迭代地將其值合併為單一的值。我們可以使用 array_reduce 函數來實現將一維數組轉換成二維數組的功能。

實作程式碼如下:

<?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);

運行結果與方法一相同。

方法三:使用array_map 函數

PHP 中的array_map 函數可以將一個或多個陣列的每個元素傳遞給回調函數進行處理,然後傳回處理後的結果,這種處理方式可以讓我們避免使用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);

運行結果與方法一、方法二相同。

總結

在本文中,我們介紹了三種將一維陣列轉換成二維陣列的方法,分別是使用 for 迴圈、array_reduce 函數和 array_map 函數。

這些方法都有一定的優劣點,選擇哪一個方法也要依照實際情況來權衡。但總的來說,使用 array_reduce 函數和 array_map 函數更加簡潔優雅。

以上是php 一維數組轉二維數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn