You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对比同序数组键值对,统计完全匹配的数量?

统计两个数组中键值对完全匹配的数量

嘿,我懂你的痛点!array_intersect和array_diff确实只会判断值是否存在,完全不管键的对应关系,所以没法直接用来统计键和值都精准匹配的数量。不过有两种简单的方法可以解决这个问题:

方法一:手动遍历统计(直观易懂)

直接遍历其中一个数组的键,逐个对比另一个数组对应位置的值,同时还要确保另一个数组存在这个键(避免索引越界):

$array1 = ['AAAA', 'DDDD', 'CCCC', 'BBBB'];
$array2 = ['AAAA', 'BBBB', 'CCCC', 'DDDD'];

$matchCount = 0;
foreach ($array1 as $key => $value) {
    // 先检查数组2有没有这个键,再对比值是否完全相等
    if (isset($array2[$key]) && $array2[$key] === $value) {
        $matchCount++;
    }
}

echo $matchCount; // 输出:2

方法二:用PHP内置函数简化操作(更简洁)

其实PHP专门提供了一个同时考虑键和值的交集函数——array_intersect_assoc,它会返回两个数组中键和值都完全匹配的所有元素。我们只需要统计这个结果数组的长度就行:

$array1 = ['AAAA', 'DDDD', 'CCCC', 'BBBB'];
$array2 = ['AAAA', 'BBBB', 'CCCC', 'DDDD'];

// 获取键值对都匹配的元素数组
$matchedItems = array_intersect_assoc($array1, $array2);
// 统计数量
$matchCount = count($matchedItems);

echo $matchCount; // 同样输出:2

小提示

array_intersect_assoc会自动忽略那些只在其中一个数组存在的键,和手动遍历里加isset的逻辑一致,不用担心数组长度不同导致的问题。如果你的数组是关联数组(不是数字索引),这个方法同样适用哦!

内容的提问来源于stack exchange,提问作者Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:34:03