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
)
可看出它对非数字键采取新的替代旧的,对数字键则是保留并且赋予新数字键名,向后顺延。