Listening to the Words

PHP二维数组(或任意维数组)转换成一维数组的方法

假设有下面一个二维数组:

[
    {
        "base_point": [
            100,
            300,
            500
        ]
    },
    {
        "base_point": [
            1000,
            3000,
            5000
        ]
    },
    {
        "base_point": [
            10000,
            50000
        ]
    }
]

把所有的值都转换成一维数组,而且键值相同不会被覆盖,转换后的一维数组是这样的:

[100,300,500,1000,3000,5000,10000,50000]

1 array_reduce函数法
用array_reduce()函数是较为快捷的方法:

$result = array_reduce($user, function ($result, $value) {
    return array_merge($result, array_values($value));
}, array())

因为array_merge函数会把相同字符串键名的数组覆盖合并,所以必须先用array_value取出值后再合并。

2 array_map函数法

用array_map和array_reduce函数的方法类似,如下:

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

只是需要多声明一个空的$result数组。

另外,也可以用array_walk的方法,和foreach循环的方法,原理和上面一样。

点赞