Home >Backend Development >PHP Problem >How to convert a two-dimensional array into multiple one-dimensional arrays in php

How to convert a two-dimensional array into multiple one-dimensional arrays in php

青灯夜游
青灯夜游Original
2021-05-20 18:05:312362browse

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.

How to convert a two-dimensional array into multiple one-dimensional arrays in php

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

  • array_reduce function method
  • array_walk_recursive function method
  • array_map function 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!

Statement:
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