2011-08-31 91 views
2

我想添加2011 - 2001年在我的下拉框(明年2012年至2012年等)。在html <select>,php代码添加<option> s

由于我不想更改我的代码,我以为在php中这样做。

我是有这样的作用后:

<select name="purchaseYear" size="1"> 
    <?echo "<option>" . date("Y") . "</option>";?> 
    <?echo "<option>" . date("Y") - 1 . "</option>";?> 
    ... 
</select> 

现在我想用一个for循环来实现它,并试图像这样:

<select name="purchaseYear" size="1"> 
    <? 
    for ($i = 0; $i <= 9; $i++) { 
     echo "<option>" . date("Y") - $i . "</option>"; 
    } 
    ?> 
</select> 

这给了我一个空掇下框。

我需要改变什么?为什么它不工作?

+0

什么HTML输出看起来像? – Dennis

回答

5

试试这个:

<select name="purchaseYear" size="1"> 

<?php for ($i = 0; $i <= 9; $i++) 
{ 
    $date = date("Y") - $i; 
    echo "<option value='$date'>" . $date . "</option>"; 
} 


?> 

只要你知道:这个问题是与Operator Precedence。您还可以添加括号这样解决问题:

<select name="purchaseYear" size="1"> 

<?php for ($i = 0; $i <= 9; $i++) 
{ 
    echo "<option>" . (date("Y") - $i) . "</option>"; 
} 


?> 

+0

+1解释 –

2

尝试这种方式

<select name="purchaseYear" size="1"> 
<? for ($i = 0; $i <= 9; $i++) 
    { 
     echo "<option>" . (date("Y") - $i) . "</option>"; 
    }?> 

,因为你做的算术运算与字符串就是为什么你必须把串联算术运算转换成()括号

或者你可以先将任何一年存储在任何其他变量中,并将该变量传入此echo语句

0
<select name="purchaseYear" size="1"> 
    <?php 
    for ($i = 0; $i <= 9; $i++) 
    { 
     ?> 
     <option><?= date("Y") - $i ?></option> 
     <?php 
    } 
    ?> 
</select> 

这对我有效!

我尽量避免将HTML放入回声语句中,只要我能帮到它。

0

或者你可以报废的循环体的计算和安装过程中执行它:

<select name="purchaseYear" size="1"> 
<?php 
    for ($i = date('Y'), $j = ($i - 10); $i >= $j; $i--) { 
     echo '<option>', $i, '</option>', PHP_EOL; 
    } 
?> 
</select> 
-1

此:

echo "<option>" . date("Y") - $i . "</option>"; 

变成这样:

echo "<option>" . (date("Y") - $i) . "</option>";