在 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中文網其他相關文章!