array_merge/array_merge_recursive/+ 几个数组合并方法的区别

array_merge/array_merge_recursive/+ 几个数组合并方法的区别

php平时开发中,经常会用到 array_merge来合并两个数组,有时候也会用 + 来合并两个数组,php手册上还有 array_merge_recursive这种合并方法,那么这三者到底有何区别呢?

下面是一个实际的例子
$arrA = ['a'=>1, 'b'=>2, 'c'=>3, 'aab', 'd'=>['are', 'you', 'ok']];
$arrB = [1, 2, 'c'=>4, 'aac', 'd'=>['how','do','you','do']];

$arrC = array_merge($arrA, $arrB);
$arrD = $arrA + $arrB;
$arrE = array_merge_recursive($arrA, $arrB);


var_dump($arrA, $arrB);
print_r($arrC);
print_r($arrD);
print_r($arrE);
echo '<hr/>';
输出结果:

array(5) {
[“a”]=>
int(1)
[“b”]=>
int(2)
[“c”]=>
int(3)
[0]=>
string(3) “aab”
[“d”]=>
array(3) {
[0]=>
string(3) “are”
[1]=>
string(3) “you”
[2]=>
string(2) “ok”
}
}
array(5) {
[0]=>
int(1)
[1]=>
int(2)
[“c”]=>
int(4)
[2]=>
string(3) “aac”
[“d”]=>
array(4) {
[0]=>
string(3) “how”
[1]=>
string(2) “do”
[2]=>
string(3) “you”
[3]=>
string(2) “do”
}
}
Array
(
[a] => 1
[b] => 2
[c] => 4
[0] => aab
[d] => Array
(
[0] => how
[1] => do
[2] => you
[3] => do
)
[1] => 1
[2] => 2
[3] => aac
)
Array
(
[a] => 1
[b] => 2
[c] => 3
[0] => aab
[d] => Array
(
[0] => are
[1] => you
[2] => ok
)
[1] => 2
[2] => aac
)
Array
(
[a] => 1
[b] => 2
[c] => Array
(
[0] => 3
[1] => 4
)
[0] => aab
[d] => Array
(
[0] => are
[1] => you
[2] => ok
[3] => how
[4] => do
[5] => you
[6] => do
)
[1] => 1
[2] => 2
[3] => aac
)

结论:
三者的 不同之处:

  • 如果有相同键的元素,array_merge以后一个数组的值为准,+ 以前一个数组的值为准,
    array_merge_recursive则会合并多个元素到一个数组里

  • 如果是数字索引的元素, 如果下标相同,array_merge会顺延下标,但是 + 会用前一个数组的值覆盖后一个数组中的相同下标的值,array_merge_recursive也会顺延下标

  • 所以array_merge后的元素总个数会比 + 操作后的元素多一些
    array_merge_recursive是唯一不丢失两个数组中任一个元素的合并方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值