如何动态设置在PHP中选择的选项


How to dynamically set an option selected in PHP

我有以下代码。。我循环遍历一个数组。现在,我想对照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>';
}