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

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

)

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


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

node吧,用JS写[em_5]
1