php数组运算符 +号的坑

php数组运算符 +号的坑

php运算符我们经常计算变量之间的运算,比较,但是数组之间却很少用,数组之前也可以用运算符进行运算。前段时间用到了 “ += ” 累加一个数组,遇到了个小坑,这里描述下两个数组相加的坑。

$a = [1,2,3,4,5,6];
$b = [7,8,9,10,11,12,13];
$a+$b = ? 
这个计算你认为会等于到少呢?

首选说下我自己的思路,我认为的计算法则,如果你也是这么认为的那么就要看这篇文章了。我认为的结果或者我期望的答案是

[1,2,3,4,5,6,7,8,9,10,11,12,13]
你是不是也认为这样呢。
实际答案:
[1,2,3,4,5,6,13];

原来相同的在$a中已经存在的键是不会被覆盖的,只会保留在$a中不存在的键在$b中存在的键,所以得到上面的答案。

所以两个数组和并在一起最好还是用array_merge()方法靠谱。最后为了防止出现重复,用array_unique()过滤一遍即可。

工作中用到的原代码是这样的:

$data = [];
foreach($arr as $key => $val) {
    $result = DB::where('val', $val)->get();
    $data += $result;   //源代码
    $data = array_merge($data, $result);  //替换后的代码
}
return $data;//本来希望是多个result的集合其实不然。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据