2016-03-29 45 views
0

我有以下代码..我循环访问一个数组。现在,我要检查(通过$ _REQUEST在我的特殊情况)对后每个值变量。如果他们是平等的选择上应注明选项字段..如何动态设置在PHP中选择的选项

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

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

回答

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>'; 
} 
+0

哦o_O,这么容易。谢谢;) –

+0

你会想在每次迭代时将'$ isSelected'设置为''''尽管... –

0

你应该在接下来的方式做到这一点:

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