PHP函数之array_merge(),用法详解
array_merge()是PHP中常用的一个数组函数,它可以用于将多个数组合并成一个数组。本文将对array_merge()的用法进行详细解析。
1. 语法
array_merge ( array $array1 [, array $... ] ) : array
参数:
array1:必需,要合并的 个数组;
...:可选,要合并的其他数组,用逗号分隔。
返回值:
如果所有参数都是数组,则该函数将返回一个合并后的数组;
否则,将返回NULL并出现一个E_WARNING错误。
2. 示例
例1:合并两个数组
<?php
$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_merge($a1,$a2));
?>
结果:
Array ( [0] => red [1] => green [2] => blue [3] => yellow )
解析:将数组a2插入到数组a1的后面形成一个新的数组。
例2:将两个数组合并到一个字符串中
<?php
$arr1=array('a','b');
$arr2=array('c','d');
$str='';
$arr=array_merge($arr1,$arr2);
foreach($arr as $k=>$v){
$str.=$v.':';
}
echo $str;
?>
结果:a:b:c:d:
解析:将两个数组合并成一个数组,然后将数组中的所有元素拼接成一个字符串,并用冒号隔开。
例3:将多维数组合并成一个一维数组
<?php
$arr1=array('a'=>array('one'=>100,'two'=>200),'b'=>array('three'=>300,'four'=>400));
$arr2=array('c'=>array('five'=>500,'six'=>600),'d'=>array('seven'=>700,'eight'=>800));
$arr=array_merge_recursive($arr1,$arr2);
$res=array();
function getAll($arr){
foreach($arr as $v){
if(is_array($v)){
getAll($v);
}else{
global $res;
$res[]=$v;
}
}
}
getAll($arr);
print_r($res);
?>
结果:Array ( [0] => 100 [1] => 200 [2] => 300 [3] => 400 [4] => 500 [5] => 600 [6] => 700 [7] => 800 )
解析:先用array_merge()将多维数组合并成一个多维数组,然后再使用递归函数将多维数组转换成一维数组。
3. 注意事项
(1)如果合并的数组中存在相同的键,则后面的键值将覆盖前面的键值。例如:
<?php
$a1=array('a'=>1,'b'=>2,'c'=>3);
$a2=array('a'=>4,'d'=>5,'e'=>6,'b'=>7);
print_r(array_merge($a1,$a2));
?>
结果:
Array ( [a] => 4 [b] => 7 [c] => 3 [d] => 5 [e] => 6 )
(2)无论数组的键是数字还是字符串,它们都会被重新编号。
(3)如果一个数组的键是数字,则合并后的数组中仍然保留该键。
(4)如果多个数组具有相同的键,但是它们的值是数组,则这些数组将递归合并。
(5)如果数组中包含NULL,则该键将被忽略,并且在最终的合并数组中不会出现。
