0

如果找到匹配项,我希望比较和更新分数 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在这条线上用,没用

4

5 回答 5

0

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

于 2013-05-16T08:17:16.270 回答
0

好吧,这个错误很容易解释。$Score_array没有2设置索引。

做一个var_dump数组并查看输出以确保它实际上包含您认为它包含的内容。

于 2013-05-16T08:18:48.580 回答
0

您在代码中使用 $i 和 $j 犯了很多错误,请仔细查看它们;)

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

于 2013-05-16T08:19:44.923 回答
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 部分

于 2013-05-16T08:20:11.613 回答
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().

于 2013-05-16T08:26:30.913 回答