2017-05-03 59 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 
    } 
}