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的集合其实不然。