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