记一次使用 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']

第一次写文章,如有理解上的错误请大家指出

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1

$arr1 = ['a', 'b', '{'1','2','3'}'];
$arr2 = ['b', 'c', '{'4','5','6'}']
数组中包含json格式数据,如何做对比?

4年前 评论
zxr615 (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!