php 7.4 中数组交集用 array_intersect()(值比较、保留首数组键名),差集用 array_diff()(同理),需键值双匹配则用 _assoc() 变体;自定义比较可用 _udiff() 系列回调函数;并集可由 array_merge() + array_unique() 实现。

PHP 7.4 中处理两个数组的交集与差集,主要依靠内置数组函数,语法简洁、性能可靠。关键不是写循环,而是选对函数、理解比较逻辑和键值保留规则。
交集:用 array_intersect() 找共同值
该函数返回第一个数组中「在所有其他数组里也都存在」的元素,严格按值比较(字符串等价判断),并保留第一个数组的原始键名。
- 值比较规则是
(string)$a === (string)$b,所以0和"0"被视为相同,但0和false在转字符串后不同("0"vs"") - 支持多个数组:
array_intersect($a, $b, $c)返回三者共有的值 - 若需同时匹配键和值,改用
array_intersect_assoc()
差集:用 array_diff() 找独有元素
返回第一个数组中有、但其余数组中都**没有**的值,同样保留第一个数组的键名,值比较规则与 array_intersect() 一致。
-
array_diff($a, $b)是 $a 相对于 $b 的差集;反过来写array_diff($b, $a)就是 $b 相对于 $a 的差集 - 不支持直接求对称差集(即只在其中一个数组里的元素),需组合:
array_merge(array_diff($a,$b), array_diff($b,$a)) - 若要连键名一起比(比如关联数组中某个键存在但值不同也算差异),用
array_diff_assoc()
进阶需求:自定义比较逻辑
当默认的松散字符串比较不满足要求时,PHP 7.4 支持带回调的变体:
-
array_udiff($a, $b, $callback):仅自定义值比较(如忽略大小写、按对象属性比) -
array_udiff_assoc($a, $b, $valueCb, $keyCb):值和键都用回调函数比 - 回调函数必须返回整数:
表示小于,<code>0表示相等,> 0表示大于(推荐使用宇航员操作符)
注意并集没有原生函数,但可快速构造
虽然题目没问并集,但实战中常配套出现:用 array_merge() 合并再用 array_unique() 去重即可,PHP 7.4 中这两个函数行为稳定,无需额外兼容处理。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











