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

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver CS6
視覺化網頁開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。