选择PHP表单选项

选择PHP表单选项,php,selection,Php,Selection,我正在使用下面的代码自动填充下拉列表的选项值。我正在试着让它选择30号。现在,它显示的数字30两次的顺序。我将如何使该序列显示18-75,并预选30个 <select name="age2" class="numb"> <?php for ($k = 18; $k <= 75; $k++) echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>';

我正在使用下面的代码自动填充下拉列表的选项值。我正在试着让它选择30号。现在,它显示的数字30两次的顺序。我将如何使该序列显示18-75,并预选30个

<select name="age2" class="numb">
<?php 
for ($k = 18; $k <= 75; $k++) 
echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
echo '<option value=30 selected>30</option>';
?>
</select>


正确的方法是

<select name="age2" class="numb">
<?php 
for ($k = 18; $k <= 75; $k++) 
{
  if($k!=30)
  {
   echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
  }
  else
  {
   echo '<option selected="selected" value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
  }
}   
?>
</select>


您只需在每次迭代中检查值,如果值为30,则返回

<select name="age2" class="numb">
<?php 
for ($k = 18; $k <= 75; $k++){
  $value = sprintf("%02d", $k) ; ?>
  <option value='<?php echo $value ; ?>' <?php echo ($value == 30) ? "selected" : "" ; ?>><?php echo $value ; ?></option> 
<?php } ?>
</select>

> 

在每次循环迭代中添加
30
选项时,必须将其置于某种条件下

    <select name="age2" class="numb">
<?php 
for ($k = 18; $k <= 75; $k++) {
if($k ==30)
{
 echo '<option selected="selected" value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 

}
else
{
  echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
}  

} 
?>
</select>



30的显示顺序不正确,因为您没有将语句包含在一组大括号中,因此
for
循环仅在第一行循环。然后,只有在完成整个循环后,即在
$k==75
之后,才打印30

如果您以后必须更改数字,我建议您定义一个
$default
值:

<select name="age2" class="numb">
<?php 
    $default = 30;
    for ($k = 18; $k <= 75; $k++) {
        if ($k == $default) {
            echo '<option value=' . $default . 'selected>' . $default . '</option>';
        } else {
            echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>';
        }
    }
?>
</select>

使用下面的代码

<select name="age2" class="numb">
<?php 
for ($k = 18; $k <= 75; $k++) {
    $selected = '';
    if($k == 30){
        $selected = 'selected="selected"';
    } else {
        $selected = '';
    }
    echo '<option value='.sprintf("%02d", $k).' '.$selected.' >'.sprintf("%02d", $k).'</option>'; 

}
?>
</select>


+1.还需要一点解释。哈哈,谢谢,对不起,在MobilePoe上,原始的
for
循环只运行第一行,因为它们没有分组在
{brages}
@icedwater oops中。是的,你是对的,这使得我的解释错了。我引起了你的注意,不是吗这是一个非常多余的问题。请先让自己了解关于该主题的现有问答,然后再针对具体问题。在一个表达式中使用echo和sprintf()某种程度上表明您在掌握一般理解方面存在问题。“我会从那一点开始改进,否则你们会犯越来越多的错误,你们会不断地疑惑。”下面哈克雷的问题被多次回答,其他人则认为是多余的。因为它是uber的复制品,如果你想问这样的问题,请列出与你现有材料不同的部分。从这个意义上说,你的问题完全不清楚。现在还不清楚你为什么要问这个问题,因为它在过去已经得到了回答。
<select name="age2" class="numb">
<?php 
for ($k = 18; $k <= 75; $k++) {
    $selected = '';
    if($k == 30){
        $selected = 'selected="selected"';
    } else {
        $selected = '';
    }
    echo '<option value='.sprintf("%02d", $k).' '.$selected.' >'.sprintf("%02d", $k).'</option>'; 

}
?>
</select>