2011-08-31 70 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>";