比较两个数组并获得相同值的数量

时间:2014-08-04 09:27:49

标签: php arrays

我正在尝试使用PHP比较两个数组。例如。

$one = ["A", "C", "B", "D", "A", so on....]
$two = ["A", "B", "B", "C", "A", so on....]

我想要做的是比较数组并获得相同的项目数。我只比较具有相同索引的项目。这就是我的想法

$ctr=0;
if ($one[0] == $two[0]){
    $ctr++;
}

if ($one[1] == $two[1]){
    $ctr++;
}

// so on.......

echo $ctr++;

但上面的代码仅适用于固定长度的数组。任何人都可以帮我提供代码吗?

3 个答案:

答案 0 :(得分:5)

看看

      $common = array_intersect($one,$two);
      echo count($common);

        // for key 

       $common = array_intersect_key($one,$two);
       echo count($common);

答案 1 :(得分:4)

首先,您可以使用循环而不是手动编写每个条件。演示:

$ctr = 0;
for($i = 0; $i < count($one); $i++) {
    $ctr += $one[$i] == $two[$i];
}

如果要比较具有相同索引的项目,并且数组的长度可能不同,那么,

$ctr = 0;
for($i = 0; $i < min(count($one), count($two)); $i ++) {
    $ctr += $one[$i] == $two[$i];
}

在第二段代码中,我们检查直到较短阵列的末尾。

如果您对订单不感兴趣,可以在任何地方进行匹配,请尝试array_intersect以及进行索引检查Array_intersect_assoc

答案 2 :(得分:0)

您可以使用以下内容来实现:

$arr = array_intersect(array('a', 'b', 'c', 'd'),array('c', 'd', 'e', 'f'));
$array_length = sizeof($arr);

希望这会对你有所帮助。