记一次使用 array_diff 使用的误区
以下两个数组
$arr1 = ['a', 'b', 'c'];
$arr2 = ['b', 'c', 'd'];
当使用array_diff时,预想着是会返回 ['a', 'd']
, 实际结果只返回了['a']
$diff = array_diff($arr1, $arr2);
print_r($diff); // ['a']
然后查php.net 是这么说:
对比 array1 和其他一个或者多个数组,返回在 array1 中但是不在其他 array 里的值。
重点在这句话:返回在 array1 中但是不在其他 array 里的值
也就是说$arr2只会和$arr1中有的值比较相当于这样:
$arr1 = ['a', 'b', 'c'];
$arr2 = ['b', 'c']; // 因为d不在$arr1数组内
// $arr2 = ['b', 'c', 'd'];
print_r(array_diff($arr1, $arr2)); //['a']
当然多个数组的话也是一样的
$arr1 = ['a', 'b', 'c'];
$arr2 = ['b', 'c', 'd'];
$arr3 = ['c', 'd', 'f'];
array_diff($arr1, $arr2, $arr3);
//实际类似这样比较
$arr1 = ['a', 'b', 'c'];
$arr2 = ['b', 'c']; // 因为c不在$arr1中
$arr3 = ['c']; // 因为d,f不在$arr1中
print_r(array_diff($arr1, $arr2, $arr3)); //['a']
所以最后的结果为 ['a']
第一次写文章,如有理解上的错误请大家指出
$arr1 = ['a', 'b', '{'1','2','3'}'];
$arr2 = ['b', 'c', '{'4','5','6'}']
数组中包含json格式数据,如何做对比?