php 两个数组合并与两个数组相加的区别

本文详细探讨了PHP中array_merge函数和+运算符在合并数组时的不同之处。array_merge会保留数字键但覆盖相同字符键,而+运算符则无论数字键还是字符键,相同键值都会被第一个数组覆盖。了解这些差异对于优化代码和避免意外结果至关重要。
摘要由CSDN通过智能技术生成

两个数据合并可以用array_merge函数也可以用+运算符进行合并操作

$arr1 = array("a"=>"PHP","b"=>"java","python");

$arr2 = array("c" =>"ruby","d" => "c++","go","a"=> "swift");

$arr3 = array_merge($arr1,$arr);

$arr4 = $arr1 + $arr2;

但这两个方法合并数组还是有不小的区别的。

array_merge对数值键不会覆盖,但会对字符键进行覆盖,如果两个数组字符键相同,则先出现的覆盖后出现的。对数字键的值会从0开始重新排列

var_dump($arr3)

打印结果:

array(6) { [“a”]=> string(5) “swift” [“b”]=> string(4) “java” [0]=> string(6) “python” [“c”]=> string(4) “ruby” [“d”]=> string(3) “c++” [1]=> string(2) “go” }

可以看到同字符键a的值值保留了siwft,PHP被丢弃,a键保持不变,python和go原本的数字键都是2,现在重新排成了0和1

而用加号进行数组合并则无论是数字键还是字符键,只要相同首先出现的将被保留,后出现的将被丢弃,且数字键会被重新排序

var_dump($arr4)

打印结果:

array(5) { ["a"]=> string(3) "PHP" ["b"]=> string(4) "java" [0]=> string(6) "python" ["c"]=> string(4) "ruby" ["d"]=> string(3) "c++" }

总结:

1、两个数组相加:(+):是用第一个数组覆盖第二个数组中键名字相同的。数字索引和字符串索引(关联数组)都会被覆盖,而且数字索引下标保留。

对于数组相加来说比较简单,无论是数组键还是字符键,键相同的时候:首先出现的键保留值,后面出现的丢弃,并且数字键会重新排序。

2、array_merge:是第二个数组覆盖第一个数组键名相同。数字索引会被保留(+会被直接覆盖掉),而且数字索引被重新排序。

对于array_merge也不难记,就是对于数字键来说,相同时候,不发生覆盖,最后数字键会重新排序。但是如果字符键相同时,后出现的覆盖先出现的(与数组相加相反)。

通常情况下两个区别不大,但是个别情况下就不能混用,以下场景里就不能使用+只能用array_merge,这种情况调试下看的更清楚
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值