一维数组的合并
<?php
$arr1=array("a","b","c");
$arr2=array("c","d","e");
$myarray=array_merge($arr1,$arr2);
print_r($myarray);
$myarray=array_unique($myarray);
print_r($myarray);
?>
二维数组的合并 PHP 中的 array_merge_recursive() 函数可以实现 将一个或多个数组的元素的合并起来,一个数组中的值附加在前一个数组的后面。并返回作为结果的数组。 当有重复的键名时,值不会被覆盖,而是将多个相同键名的值递归组成一个数组。
array_merge_recursive(array1,array2,array3...)
参数说明 array1 必需。输入的第一个数组。 array2 必需。输入的第二个数组。 array3 可选。可指定的多个输入数组。 例如:
<?php
$a1=array("a"=>"Horse","b"=>"Dog");
$a2=array("c"=>"Cow","b"=>"Cat");
print_r(array_merge_recursive($a1,$a2));
?>
输出:
Array (
[a] => Horse
[b] => Array (
[0] => Dog
[1] => Cat )
[c] => Cow
)
注:array_merge() 函数也可以实现,与 array_merge_recursive()函数不同是,如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。
把一个二维数组合并成一个一位数组
<?php
$arr = array(
'0' => array('1','2'),
'1' => array('2','3'),
'2' => array('3','4'),
'3' => array('4','5'),
'4' => array('5','6'),
);
?>
得到一个$new_arr = array('1','2','2','3','3','4','4','5','5','6');
//方法一:
$res = array();
array_walk($arr,function($item,$key) use (&$res){
$res = array_merhe($res,$item);
});
var_dump($res);
//方法二:
$res = array();
foreach($arr as $item){
$res = array_merge($res,$item);
}
var_dump($res);
//方法三:
$res = array();
array_walk_reursive($arr,function($item,$key) use (&$res){
$res[] = $item;
});
var_dump($res);
三种方法从消耗时间比较:
方法一消耗时间最长
方法三消耗时间最短