PHP如何统计两个数组去重后的交集元素个数
PHP 统计数组不重复交集元素数量的实现方法
方案1:先对数组去重再求交集
该方案先去除两个数组的内部重复值,再计算交集并统计数量,适合需要同时用到去重后数组的场景。
示例代码:
$first = array(1,1,2,3,4); $second = array(1,2,3,4,5); // 分别对两个数组去重 $uniqueFirst = array_unique($first); $uniqueSecond = array_unique($second); // 计算交集后统计元素数 $count = count(array_intersect($uniqueFirst, $uniqueSecond)); // 最终 $count 的值为 4
方案2:先求交集再去重统计
该方案先计算完整交集,再对交集结果去重后统计,适合需要保留完整交集元素做其他后续处理的场景。
示例代码:
$first = array(1,1,2,3,4); $second = array(1,2,3,4,5); // 先获取包含重复值的完整交集 $intersectResult = array_intersect($first, $second); // 对交集去重后统计 $count = count(array_unique($intersectResult)); // 最终 $count 的值为 4
原理说明
array_intersect()的原生逻辑是保留第一个数组中所有在后续数组中存在的元素,包括重复出现的元素,因此直接统计会计入重复值。两种方案均通过去重操作过滤掉重复的交集元素,得到不重复的交集统计结果。如果处理的数组量级极大,优先对元素更多的数组做前置去重,可以减少交集计算的运算量,性能表现更好。
内容的提问来源于stack exchange,提问作者Blitzkriegfest
相关产品推荐
相关产品推荐

