Home >Backend Development >PHP Problem >How to convert a two-dimensional array into multiple one-dimensional arrays in php
php method to convert a two-dimensional array to multiple one-dimensional arrays: 1. Use the array_reduce() function to convert; 2. Use the array_walk_recursive() function to convert; 3. Use the array_map() function to convert.
The operating environment of this tutorial: windows7 system, PHP7.1 version, DELL G3 computer
PHP two-dimensional array (or any dimensional array) into a one-dimensional array method
Assume that there is the following two-dimensional array:
$user = array( '0' => array('id' => 100, 'username' => 'a1'), '1' => array('id' => 101, 'username' => 'a2'), '2' => array('id' => 102, 'username' => 'a3'), '3' => array('id' => 103, 'username' => 'a4'), '4' => array('id' => 104, 'username' => 'a5'), );
Now we want to convert it into a one-dimensional array, there are two situations:
One is to convert the specified column into a one-dimensional array , which is summarized in another article: A complete list of methods for PHP to extract a specified column from a multi-dimensional array.
Now we focus on the second case, which is to convert all values into a one-dimensional array, and the key values are the same and will not be overwritten. The converted one-dimensional array looks like this:
$result = array(100, 'a1', 101, 'a2', 102, 'a3', 103, 'a4', 104, 'a5');
There are mainly the following methods.
1 array_reduce function method
Using the array_reduce() function is a faster method:
$result = array_reduce($user, function ($result, $value) { return array_merge($result, array_values($value)); }, array())
Because The array_merge
function will overwrite and merge arrays with the same string key name, so you must first use array_value
to get the value and then merge it.
If the second dimension is a numeric key name, such as:
$user = array( 'a' => array(100, 'a1'), 'b' => array(101, 'a2'), 'c' => array(102, 'a3'), 'd' => array(103, 'a4'), 'e' => array(104, 'a5'), );
Then just do this:
$result = array_reduce($user, 'array_merge', array())
2 array_walk_recursive function method
The array_walk_recursive() function is very flexible and can convert an array of any dimension into a one-dimensional array.
$result = []; array_walk_recursive($user, function($value) use (&$result) { array_push($result, $value); });
For example, the following multi-dimensional array:
$user4 = array( 'a' => array(100, 'a1'), 'b' => array(101, 'a2'), 'c' => array( 'd' => array(102, 'a3'), 'e' => array(103, 'a4'), ), );
After using this method, it becomes:
$result = array(100, 'a1', 101, 'a2', 102, 'a3', 103, 'a4');
3 array_map function method
The method of using array_map
and array_reduce
functions is similar, as follows:
$result = []; array_map(function ($value) use (&$result) { $result = array_merge($result, array_values($value)); }, $user);
Just need to declare an empty <span class="hljs-variable">$result</span>
Array.
In addition, you can also use the array_walk
method and the <span class="hljs-keyword">foreach</span>
loop method. The principle is the same as above.
Recommended learning: "PHP Video Tutorial"
The above is the detailed content of How to convert a two-dimensional array into multiple one-dimensional arrays in php. For more information, please follow other related articles on the PHP Chinese website!