【问题标题】:How to dynamically set an option selected in PHP如何动态设置在 PHP 中选择的选项
【发布时间】:2016-07-16 23:24:32
【问题描述】:

我有以下代码。我循环遍历一个数组。现在我想根据帖子检查每个值(在我的特殊情况下通过 $_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>';
}

我的问题是每个选项值都被标记为选中。

【问题讨论】:

    标签: php option selected


    【解决方案1】:

    试试这个

    foreach($optionArr as $key => $value){
       $isSelected =""; //added this line
       if($_REQUEST['opt_side_'.$cside] == $value){
         $isSelected = "selected";
       }
       echo '<option value="'.$value.'"'.$isSelected.'>'.$key.'</option>';
    }
    

    【讨论】:

    • 哦 o_O,太容易了。谢谢;)
    【解决方案2】:

    你应该用下面的方式来做:

    $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>';
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-28
      • 1970-01-01
      • 1970-01-01
      • 2012-12-04
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多