比较2个不同长度的阵列

时间:2013-05-16 08:15:06

标签: php arrays

我想要比较2个数组并在找到匹配项时更新分数:

One_array[0] = bla
One_array[1] = blabla
One_array[2] = blablabla

Two_array[0] = bla
Two_array[1] = blabla

Score_array[0] = 10
Score_array[1] = 15
Score_array[2] = 1

现在这里是用于进行比较的PHP代码:

$count = count($One_array);
$Score = 0; //Initialize score

for($i=0;$i<=$count;$i++){
  for($j=0;$j<=$count;$j++){
    if(isset($Two_array[$i]) == $One_array[$j]){
      $Score = $Score + $Score_array[$j];
    }
  }
}

我收到以下错误:

  

未定义的偏移量:2   在线$ Score = Score + $ Score_array [$ j];

请协助,我也尝试在这一行使用isset,但它不起作用

5 个答案:

答案 0 :(得分:0)

您应该可以使用PHP http://php.net/manual/en/function.array-diff.php中的array_diff()函数,而不是自己创建比较函数。

答案 1 :(得分:0)

嗯,错误是非常自我解释的。 $Score_array没有设置索引2

执行数组的var_dump并查看输出以确保它实际包含您认为包含的内容。

答案 2 :(得分:0)

使用$ i和$ j在代码中犯了很多错误,更好地查看它们;)

顺便说一句,你应该使用array_diff而不是重新发明轮子:)

答案 3 :(得分:0)

使用此代码:

$count = count($One_array);
$Score = 0; //Initialize score

for($i=0;$i<=$count;$i++)
                            {
                                for($j=0;$j<=$count;$j++)
                                {
                                    if(isset($Two_array[$i]) && isset($One_array[$j]) && $Two_array[$i]==$One_array[$j])
                                        {
                                            $Score = $Score + $Score_array[$j];
                                        }
                                }
                            }

你的问题是if部分

答案 4 :(得分:0)

这两个循环需要不同的限制,因为数组的大小不同。

$count1 = count($One_array);
$count2 = count($Two_array);
$Score = 0; //Initialize score

for($i=0;$i<$count2;$i++)
{
    for($j=0;$j<$count1;$j++)
    {
        if($Two_array[$i] == $One_array[$j])
            {
                $Score = $Score + $Score_array[$j];
            }
    }
}

有了这个,您不需要使用isset()