2013-05-16 3 views
0

у меня есть 2 массивы, которые я хотел сравнить и обновлять счет, если совпадение найдено:Сравнение 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]; 
    } 
    } 
} 

я получаю следующее сообщение об ошибке:

Undefined offset: 2 On the line $Score = Score+$Score_array[$j];

Пожалуйста помогите, я также пытался использовать isset по нац это строка, она не работает

+0

Что не так с использованием функций, таких как функции array_intersect _ *()? –

ответ

0

две петли нужны различные ограничения, поскольку массивы различного размера s.

$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().

+0

Привет @Barmar, я пробовал этот код, но теперь я получаю ошибку смещения на if-statement – user1783675

+0

'<=' должно быть '<' в условии цикла. Вы перемещались на один элемент слишком далеко в обоих циклах. – Barmar

0

Хорошо, ошибка довольно понятна. $Score_array не имеет указателя 2.

Сделайте var_dump из массива и посмотрите на результат, чтобы убедиться, что он фактически содержит то, что, по вашему мнению, содержит.

0

Вы сделали много ошибок в коде с $ я и $ J, лучше рассмотреть на них;)

Кстати, вы должны использовать array_diff вместо того чтобы изобретать колесо :)

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]; 
             } 
           } 
          } 

ваша проблема была, если часть

Смежные вопросы