PHP合并数组:+=、[]=、array_push、array_merge(网络最完整测试)

C 2019-10-28 2703

PHP合并数据:+=、[]=、array_push、array_merge

这几个方法的区别,这里用一个示例来简要说明。

<?php
$arr=array('a','c','b');
$new=array('d','b','a','z');
$arr[]=$new;print_r($arr);die;
//$arr+=$new;print_r($arr);die;
//array_push($arr,$new);print_r($arr);die;
//$arr=array_merge($arr,$new);print_r($arr);die;
?>

每次使用一个方法,其余行注释。测试结果如下:

+=:键名先到占位,新数组中冲突的被舍弃,只留下多出的键。

Array
(
    [0] => a
    [1] => c
    [2] => b
    [3] => z
)

[]=:把数组作为元素添加到了最后。

Array
(
    [0] => a
    [1] => c
    [2] => b
    [3] => Array
        (
            [0] => d
            [1] => b
            [2] => a
            [3] => z
        )
)

array_push:和[]=一样,但不用给$arr赋值。

Array
(
    [0] => a
    [1] => c
    [2] => b
    [3] => Array
        (
            [0] => d
            [1] => b
            [2] => a
            [3] => z
        )
)

array_merge:键名为数字(1或'1'皆可)则保留元素,赋予新的数字键名。键名非数字,则新同键名元素替换旧元素。

Array
(
    [0] => a
    [1] => c
    [2] => b
    [3] => d
    [4] => b
    [5] => a
    [6] => z
)

最后这个需要特别说明,再做一个实验:

<?php
$arr=array('abc'=>'a','3'=>'b','def'=>'c');
$new=array('1'=>'d','abc'=>'b','4'=>'a','5'=>'z');
$arr=array_merge($arr,$new);print_r($arr);die;
?>

结果如下:

Array
(
    [abc] => b
    [0] => b
    [def] => c
    [1] => d
    [2] => a
    [3] => z
)

可看出它对非数字键采取新的替代旧的,对数字键则是保留并且赋予新数字键名,向后顺延。


最新回复 (2)
  • C 2019-10-28
    2

    气死了,我说以前用array_merge怎么老出状况……

  • 德克斯特 2019-10-28
    3
    node吧,用JS写[em_5]