2017-05-03 39 views
1

我想從數據做一個郵政用戶bithyear。但我在這裏有一個問題。所以我想檢查發佈年份in_array。用戶可以選擇從1950年到2017年的一年。我使用了以下php代碼。PHP檢查in_array年號

<select name="birth_year" id="year" class="t1-select"> 
    <option value="">Year</option> 
    <?php for ($i=1950; $i<date('Y'); $i++) { ?> 
     <option value="<?php echo $i; ?>"> 
      <?php echo $i; ?> 
     </option> 
    <?php } ?> 
</select> 

現在您知道選項值是1950,1951,1952,...,2014,2015,2016,2017

您知道用戶可以從開發人員控制檯更改選項值。這意味着用戶可以發佈100000。我想用php檢查這些年數。

我知道我可以用下面的陣列

$birthMonth = array("1950", "1951", "1952", "1953", "1954", "1955",....,"2014,"2016","2017""); 

    if(in_array($_POST['birth'], $birthMonth)){} 

這意味着我需要寫那麼多的年份中做到這一點。我的問題是:我怎樣才能檢查幾年in_array很短的帖子?

任何人都可以幫助我嗎?

回答

4

只需使用range()動態建立的多年的陣列爲您提供:

if(in_array($_POST['birth'], range(1950, date("Y")))){} 

您可以使用date("Y")總是得到當前年份。你總是可以用其他的日期魔法來限制它到一定的範圍,比如「10年前」。

if(in_array($_POST['birth'], range(1950, date("Y", strtotime('-10 years'))))){} 
+0

謝謝您的回答。因此,我們可以使用它來進行日期寫入,例如:if(in_array($ _ POST ['date'],range(01,date(「d」)))){}' – Azzo

+1

如果您有一個前導零在你面前一天。這使它成爲一個八進制數,與十進制數不同。 –

+0

感謝您的回答。 – Azzo

2

你並不需要一個array對於這樣一個簡單的任務,即:

if(!empty($_POST['birth'])) 
{ 
    $bday = $_POST['birth']; 
    if ($bday >= 1950 and $bday <= date("Y")) 
    { 
     # do something 
    } 
}