我不确定从哪里开始,但我试图在1928年开始一年,并在1948年停止,并且每年增加一年,因此自2012年以来日期范围是1928年至1948年和2013年将是1929年至1949年和2014年将是1930年至1950年等等......
现在我只有一个基本的循环,什么时候开始和停止岁月,但它不是太动态,就像我说我几乎在哪里开始其他日期('Y')+ 1 < / p>
for($i=1928;$i<=date('Y');$i++)
{
echo '<option value='.$i.'>'.$i.'</option>';
if($i == '1948'){break;}
}
答案 0 :(得分:16)
所以你希望它介于当前年份减去84和当前年份减去64之间?使用此代码:
$firstYear = (int)date('Y') - 84;
$lastYear = $firstYear + 20;
for($i=$firstYear;$i<=$lastYear;$i++)
{
echo '<option value='.$i.'>'.$i.'</option>';
}
编辑:针对性能进行了更新。当前年份在循环之前确定(根据Pitchinnate的评论)。
答案 1 :(得分:2)
试试这个:
$year = date('Y');
$add = $year - 2012;
$min = 1928 + $add;
$max = $min + 20;
for($i=$min;$i<=$max;$i++)
{
echo '<option value='.$i.'>'.$i.'</option>';
}
我不希望在for循环中使用日期('Y')或任何评估,因为每次循环都会计算它。关于此事Article。
答案 2 :(得分:2)
for($i =0; $i <= 20 ;$i++)
{
$year = date('Y') - 84 + $i;
echo '<option value='.$year.'>'.$year.'</option>';
}
答案 3 :(得分:2)
看起来你有一个常数,你想要的日期范围是多少,你可以用来编写一个适合你的循环。
自2012年以来,您希望范围从2012年的1928年开始,那么我们可以使用2012 - 1928 = 84,因此开始范围的年份应始终为84比当年少。
因此我们可以编写如下代码:
$startingYear = date('Y') - 84;
$endingYear = $startingYear + 20;
for ($i = $startingYear;$i <= $endingYear;$i++)
{
echo '<option value='.$i.'>'.$i.'</option>';
}
答案 4 :(得分:1)
这样的东西?
$base_year = 2012;
$start_year = $base_year - 84;
$end_year = $start_year + 20;
for( $i = $start_year; $i <= $end_year; $i++)
{
echo '<option value='.$i.'>'.$i.'</option>';
}