欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

php多位数组合并的三种方式

程序员文章站 2022-05-08 15:19:18
...

首选说明一下这篇文章有点标题党的嫌疑,我前面写了一篇文章对比了php合并一维数组的三种方式,后来又用这三种方式都来处理了一下多维数组,奇怪的是array_merge和+都没有报错,我就以为他们也能用来处理多维数组。仔细观察了一下结果,才发现这两种方式其实

首选说明一下这篇文章有点标题党的嫌疑,我前面写了一篇文章对比了php合并一维数组的三种方式,后来又用这三种方式都来处理了一下多维数组,奇怪的是array_merge和+都没有报错,我就以为他们也能用来处理多维数组。仔细观察了一下结果,才发现这两种方式其实是来打酱油的。
请看代码

    $array1 = array(2,4,"color" => "red");
    $array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
    $array3 = array("e","f","red"=>array("little"=>"little",3,5),2,4);
    $array4 = array("a","b","red"=>array("little"=>"big",4,6),8,9);
    echo "----------------array_merge---------------".PHP_EOL;
    print_r(array_merge($array3,$array4));
    echo "----------------+++++++++++++++++++++---------------".PHP_EOL;
    print_r($array3+$array4);
    echo "----------------array_merge_recursive---------------".PHP_EOL;
    print_r(array_merge_recursive($array3,$array4));

结果如下

----------------array_merge---------------
Array
(
    [0] => e
    [1] => f
    [red] => Array
        (
            [little] => big
            [0] => 4
            [1] => 6
        )
    [2] => 2
    [3] => 4
    [4] => a
    [5] => b
    [6] => 8
    [7] => 9
)
----------------+++++++++++++++++++++---------------
Array
(
    [0] => e
    [1] => f
    [red] => Array
        (
            [little] => little
            [0] => 3
            [1] => 5
        )
    [2] => 2
    [3] => 4
)
----------------array_merge_recursive---------------
Array
(
    [0] => e
    [1] => f
    [red] => Array
        (
            [little] => Array
                (
                    [0] => little
                    [1] => big
                )
            [0] => 3
            [1] => 5
            [2] => 4
            [3] => 6
        )
    [2] => 2
    [3] => 4
    [4] => a
    [5] => b
    [6] => 8
    [7] => 9
)

看完代码,我想聪明的看官您已经发现了打酱油的含义:array_merge和+把第一维数组的值都当作一个简单变量,然后用处理一维素组的方式把传进去的素组处理了一遍。
只有array_merge_recursive使用了迭代的方式处理了每一维度的素组。