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