Summary of methods for converting PHP two-dimensional array (or any dimensional array) into one-dimensional array

angryTom
Release: 2023-04-07 17:04:02
forward
2167 people have browsed it

Summary of methods for converting PHP two-dimensional array (or any dimensional array) into one-dimensional array

Suppose 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'),
);
Copy after login

Now we want to convert it into a one-dimensional array, there are two situations:

One It converts the specified column into a one-dimensional array, which is summarized in another article: "Comprehensive method of extracting a specified column from a multi-dimensional array in PHP".

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');
Copy after login

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())
Copy after login

Because the array_merge function will merge the same characters Arrays of string key names are overwritten and merged, so the values ​​must be retrieved using array_value before merging.

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'),
);
Copy after login

, then just do this:

$result = array_reduce($user, 'array_merge', array())
Copy after login

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);
});
Copy after login

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'),
    ),
);
Copy after login

After using this method, it becomes:

$result = array(100, 'a1', 101, 'a2', 102, 'a3', 103, 'a4');
Copy after login

3 array_map function method

The methods of using array_map and array_reduce functions are similar, as follows:

$result = [];
array_map(function ($value) use (&$result) {
    $result = array_merge($result, array_values($value));
}, $user);
Copy after login

Just need to declare an empty $result array.

In addition, you can also use the array_walk method and the foreach loop method. The principles are the same as above.

For more PHP related knowledge, please visit PHP Chinese website!

The above is the detailed content of Summary of methods for converting PHP two-dimensional array (or any dimensional array) into one-dimensional array. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:www.awaimai.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template