php怎么判断两个数组的差集_php数组差集array_diff计算与遍历法【技巧】

星夢妙者
发布: 2025-12-14 22:21:08
原创
881人浏览过
可使用五种方法找出第一个数组中存在但第二个数组中不存在的元素:一、array_diff()仅比较值;二、array_diff_assoc()同时比较键和值;三、foreach遍历加in_array判断;四、array_filter配合匿名函数;五、array_keys结合array_diff_key模拟键差集。

php怎么判断两个数组的差集_php数组差集array_diff计算与遍历法【技巧】

如果您需要找出两个数组中存在于第一个数组但不存在于第二个数组的元素,则可以使用 PHP 提供的内置函数或手动遍历实现。以下是几种可行的方法:

一、使用 array_diff() 函数

array_diff() 是 PHP 原生函数,用于比较一个或多个数组的键值,并返回第一个数组中其他数组不包含的值。该函数仅比较值,不比较键名,且保留原始键名。

1、定义两个数组,例如 $arr1 = [1, 2, 3, 4]; $arr2 = [3, 4, 5, 6];

2、调用 $result = array_diff($arr1, $arr2);

立即学习PHP免费学习笔记(深入)”;

3、输出结果:print_r($result); 将显示 Array ( [0] => 1 [1] => 2 )

二、使用 array_diff_assoc() 函数

array_diff_assoc() 在比较值的同时也对比键名,适用于需同时考虑键与值一致性的场景。当两个数组存在相同值但键名不同时,该键值对仍被保留在差集中。

1、定义 $arr1 = ['a' => 1, 'b' => 2, 'c' => 3]; $arr2 = ['x' => 1, 'b' => 2, 'y' => 4];

2、执行 $result = array_diff_assoc($arr1, $arr2);

3、结果中 'a' => 1'c' => 3 会被保留,因为它们的键名未在 $arr2 中以相同键值对形式出现。

三、使用 foreach 遍历 + in_array 判断

通过手动遍历第一个数组,逐个检查其元素是否存在于第二个数组中,可完全控制比较逻辑,支持自定义类型判断(如忽略大小写、浮点精度处理等)。

1、初始化空数组 $diff = [];

来画数字人直播
来画数字人直播

来画数字人自动化直播,无需请真人主播,即可实现24小时直播,无缝衔接各大直播平台。

来画数字人直播 57
查看详情 来画数字人直播

2、使用 foreach 遍历 $arr1,对每个值 $val 执行 if (!in_array($val, $arr2, true)) { $diff[] = $val; }

3、注意第三个参数 true 启用严格比较,避免 0 == '0' 或 0 == false 类型转换误判。

四、使用 array_filter + anonymous function

借助 array_filter 可以更函数式地表达“筛选出不在 $arr2 中的 $arr1 元素”,代码简洁且易于嵌套扩展。

1、设定 $arr1 和 $arr2;

2、执行 $diff = array_filter($arr1, function($v) use ($arr2) { return !in_array($v, $arr2, true); });

3、若需重置键名,可追加 $diff = array_values($diff); 此时结果为 [1, 2] 形式索引数组。

五、使用 array_keys + array_diff_key 模拟键差集

当目标是获取两个数组键名的差集(即只存在于 $arr1 键中而不在 $arr2 键中的键),可先提取键名再计算差集。

1、获取键数组:$keys1 = array_keys($arr1); $keys2 = array_keys($arr2);

2、计算键差:$key_diff = array_diff($keys1, $keys2);

3、用 array_intersect_key 提取对应值:$diff = array_intersect_key($arr1, array_flip($key_diff));

以上就是php怎么判断两个数组的差集_php数组差集array_diff计算与遍历法【技巧】的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号