PHP数组合并 array_merge 与 + 的差异

本文详细对比了PHP中使用array_merge与+操作符进行数组合并的区别。对于相同键名的处理不同,array_merge会覆盖,而+操作符则忽略右边数组中的重复键名。

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

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

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

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

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

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

2、$array1 + $array2

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

 

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

 1 $array1 = array("name" => "wing", "good", 322222=>2, 4);
 2 $array2 = array("a", "b", "color" => "green", "hello" => "word", 3=>4);
 3 
 4 // array1 + array2
 5 function addArray($arr1 = array(), $arr2 = array()) {
 6     if(!empty($arr2)) {
 7         foreach($arr2 as $key=>$value) {
 8             if(!isset($arr1[$key])) {
 9                 $arr1[$key] = $value;
10             }
11         }
12     }
13     return $arr1;
14 }
15 
16 // array_merge
17 function arrayMerge($arr1 = array(), $arr2 = array()) {
18     $result = array();
19     foreach(array($arr1, $arr2) as $arr) {
20         if(!empty($arr)) {
21             foreach($arr as $key=>$value) {
22                 if(!is_numeric($key)) {
23                     $result[$key] = $value;
24                 } else {
25                     $result[] = $value;
26                 }
27             }
28         }
29     }
30     return $result;
31 }

 

 

转载于:https://www.cnblogs.com/axwing/p/5360675.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值