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

まあ、エラーはかなり自明です。にはインデックスセット$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

配列のサイズが異なるため、2 つのループには異なる制限が必要です。

$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 に答える
0

自分で比較関数を作成する代わりにarray_diff()、PHP http://php.net/manual/en/function.array-diff.phpで関数を使用できるはずです。

于 2013-05-16T08:17:16.270 に答える