PHP数组合并 array_merge 与 + 的差异

在PHP数组合并出过几次问题都没记住,写下来加强一点记忆

PHP数组在合并时,使用 array_merge 与 + 的差异:

1、array_merge(array $array1 [, array $... ])

a、如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。

b、如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

c、如果输入只有一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

2、$array1 + $array2

a、两个数组中有的相同的键名,则只用左边数组中的,右边的被忽略。

这两种合并的效果类似如下(不过还是看看源码的靠谱):

 $array1 = array("name" => "wing", "good", 322222=>2, 4);
$array2 = array("a", "b", "color" => "green", "hello" => "word", 3=>4); // array1 + array2
function addArray($arr1 = array(), $arr2 = array()) {
if(!empty($arr2)) {
foreach($arr2 as $key=>$value) {
if(!isset($arr1[$key])) {
$arr1[$key] = $value;
}
}
}
return $arr1;
} // array_merge
function arrayMerge($arr1 = array(), $arr2 = array()) {
$result = array();
foreach(array($arr1, $arr2) as $arr) {
if(!empty($arr)) {
foreach($arr as $key=>$value) {
if(!is_numeric($key)) {
$result[$key] = $value;
} else {
$result[] = $value;
}
}
}
}
return $result;
}
上一篇:Django商城项目笔记No.6用户部分-注册接口-短信验证码实现celery异步


下一篇:JavaIO再回顾