首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 自動生成過去 100 年下拉年份選單

     編輯:PHP 綜合知識

一行程式碼搞定百年年份選單

表單常需年份選擇(生日、卡片效期、統計篩選)。利用 `range()` + `date()` + `strtotime()` 可動態生成從今年往前 100 年的選單,無需手動維護。

核心代碼

<select name="year">
    <?php
    // 今年往前 100 年(含今年),遞減排序
    $years = range(date("Y"), date("Y", strtotime("now - 100 years")));
    foreach ($years as $year) {
        echo '<option value="' . $year . '">' . $year . '</option>';
    }
    ?>
</select>

關鍵函式解析

  • date("Y"):取得當前年份(4 位數)
  • strtotime("now - 100 years"):計算 100 年前的時間戳
  • date("Y", ...):將時間戳格式化為年份
  • range($start, $end):建立從 $start 到 $end 的整數陣列(支援遞減)

進階變化

遞增排序(舊到新)

$years = range(date("Y", strtotime("now - 100 years")), date("Y"));

預設選中特定年份

$default = 1990;  // 或從資料庫讀取
foreach ($years as $year) {
    $sel = ($year == $default) ? ' selected' : '';
    echo "<option value=\"$year\"$sel>$year</option>";
}

只顯示成年年份(18 歲以上)

$adult_year = date("Y") - 18;
$years = range($adult_year, date("Y", strtotime("now - 100 years")));

搭配月份、日期選單(聯動驗證)

年份選單生成後,前端 JS 可根據年份、月份動態調整日期選項天數(處理閏年、大小月)。

效能與快取

年份選單極少變動,建議:

  1. 後端快取生成的 HTML 片段(檔案/Redis/APCu),TTL 設 1 年
  2. 或前端 JS 直接生成:`for(y=new Date().getFullYear(); y>new Date().getFullYear()-100; y--) document.write('')`

此技巧同樣適用於月份(1-12)、日期(1-31)、小時(0-23)等固定範圍選單生成。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved