#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. В этом и заключалась проблема, и действительно, это имеет смысл! Еще раз спасибо.