如何在PHP中根据匹配的值和顺序比较两个数组?

时间:2019-03-15 09:19:00

标签: php

我有2个数组,我想按匹配的值以及合资格值的顺序和计数来比较它们。

$a = [A,B,C,D,E,F,G];
          | |     |
$b = [B,A,C,D,F,E,G];

在这种情况下,输出应为 3 。如何以最佳性能实现这一目标?

更新

我不仅在询问匹配值,还应该以相同顺序匹配值。

2 个答案:

答案 0 :(得分:1)

Array_diff_assoc将计算不相同的内容(4)。
计数将计算项目数(7)。
7-4 = 3。

echo count($a) - count(array_diff_assoc($a,$b)); // 3

https://3v4l.org/OIknS

编辑或仅array_intersect_assoc

echo count(array_intersect_assoc($a,$b)); //3

直到现在我都没想到。

答案 1 :(得分:0)

假设两个数组的大小相同,则可以通过一个简单的循环进行操作:

$count = 0;

foreach ($a as $key => $value) {
    if ($value === $b[$key]) {
        $count++;
    }
}

var_dump($count);

如果它们的大小不同,则必须检查密钥是否也存在于第二个数组中。