Как сравнить эти 2 массива для проверки соответствия

#php

#php

Вопрос:

Мне нужно сравнить данные, поступающие из поля базы данных, со значениями из массива, чтобы увидеть, есть ли у меня совпадение, и выбрать это совпадение.

Это то, что у меня есть:

 $lookingfor = explode(",", $users_looking_for);
$i = 0;
foreach($i_am_looking_for_array as $key => $value){ 
 if($value==$lookingfor[$i]){
   echo '<option value="'.$key.'" selected="selected">'.$value.$i.'</option>';}
 else {
   echo '<option value="'.$key.'">'.$value.$i.'</option>';}
$i   ;
}
  

Итак, $lookingfor получает данные, хранящиеся в поле базы данных в формате (синий, черный, белый), а $im_looking_for_array имеет те же параметры.
Моя цель здесь — создать выпадающие поля со всеми параметрами, доступными из $ im_looking_for_array, и если одно из них совпадает, отметьте его ВЫБРАННЫМ в раскрывающемся поле множественного выбора.

Что происходит с моим кодом выше, так это то, что он улавливает только первое совпадение! Есть идеи? Большое спасибо.

Ответ №1:

Я думаю, что проблема с вашим кодом заключается в том, что у вас есть только один цикл. Таким образом, вы сравниваете объекты только с одним и тем же индексом. Если массивы будут иметь разную длину, это может даже привести к ошибкам (неопределенный индекс, если count($i_am_looking_for_array) > count($lookingfor) ).

Как насчет использования in_array?

 $lookingfor = explode(",", $users_looking_for);

foreach($i_am_looking_for_array as $key => $value){ 
 if(in_array($value, $lookingfor))
   echo '<option value="'.$key.'" selected="selected">'.$value.$key.'</option>';
 else
   echo '<option value="'.$key.'">'.$value.$key.'</option>';
}
  

Комментарии:

1. Произойдет сбой. В строке 4 отсутствуют круглые скобки.

2. Спасибо @Czechnology. В этом и заключалась проблема, и действительно, это имеет смысл! Еще раз спасибо.