У меня есть следующий код .. Я перебираю массив. Теперь я хочу проверить каждое значение по переменной post (в моем специальном случае через $ _REQUEST). Если они равны, поле опции должно быть помечено как выбранное.
$optionArr = array (opt_side_a => 10, opt_side_b => 20);
// Outter LOOP - $cside = iterator //
// INNER LOOP //
foreach($optionArr as $key => $value){
if($_REQUEST['opt_side_'.$cside] == $value){
$isSelected = "selected";
}
echo '<option value="'.$value.'"'.$isSelected.'>'.$key.'</option>';
}
Моя проблема в том, что каждое значение параметра помечается как выбранное.
Попробуй это
foreach($optionArr as $key => $value){
$isSelected =""; //added this line
if($_REQUEST['opt_side_'.$cside] == $value){
$isSelected = "selected";
}
echo '<option value="'.$value.'"'.$isSelected.'>'.$key.'</option>';
}
Вы должны сделать это следующим образом:
$optionArr = array (opt_side_a => 10, opt_side_b => 20);
// Outter LOOP - $cside = iterator //
// INNER LOOP //
foreach($optionArr as $key => $value){
if($_REQUEST['opt_side_'.$cside] == $value){
echo '<option value="'.$value.'" "selected">'.$key.'</option>';
}
}
Вы устанавливаете $ isSelected только один раз, но он будет отображаться во всех опциях после первой инициализации. Кроме того, если вам нужна эта переменная, вы должны очистить ее после установки опции, выбранной один раз, например, так:
$optionArr = array (opt_side_a => 10, opt_side_b => 20);
// Outter LOOP - $cside = iterator //
// INNER LOOP //
foreach($optionArr as $key => $value){
$isSelected = "";
if($_REQUEST['opt_side_'.$cside] == $value){
$isSelected = "selected";
}
echo '<option value="'.$value.'"'.$isSelected.'>'.$key.'</option>';
}