In PHP, sometimes you encounter the need to convert a one-dimensional array into a two-dimensional array. For example, we may need to process a one-dimensional array that contains a lot of data, but the data needs to be grouped according to certain rules. In this case, we need to convert the one-dimensional array into a two-dimensional array.
Next, let’s introduce how to convert a one-dimensional array to a two-dimensional array.
Method 1: Use for loop
First, we can use for loop to traverse the one-dimensional array, and then add the data to the new two-dimensional array according to the data grouping. This method is relatively straightforward, but it requires manual maintenance of some variables, which is cumbersome.
The implementation code is as follows:
<?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);
The running results are as follows:
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 ) ) )
Method 2: Use the array_reduce function
The array_reduce function in PHP can pass an array The custom function iteratively combines its values into a single value. We can use the array_reduce function to convert a one-dimensional array into a two-dimensional array.
The implementation code is as follows:
<?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);
The running result is the same as method one.
Method 3: Use array_map function
The array_map function in PHP can pass each element of one or more arrays to the callback function for processing, and then return the processed result. This This approach allows us to avoid using for loops.
The implementation code is as follows:
<?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);
The operation result is the same as method one and method two.
Summary
In this article, we introduced three methods to convert a one-dimensional array into a two-dimensional array, using the for loop, array_reduce function and array_map function.
These methods all have certain advantages and disadvantages, and which method to choose should also be weighed according to the actual situation. But in general, using array_reduce function and array_map function is more concise and elegant.
The above is the detailed content of Convert one-dimensional array to two-dimensional array in php. For more information, please follow other related articles on the PHP Chinese website!