9

重複の可能性:
PHPで日付を1(日/年)でインクリメントする方法は?

どこから始めればよいかよくわかりませんが、年を 1928 で開始し、1948 で終了するようにしようとしています。毎年年が 1 ずつ増えるため、2012 年以降の日付範囲は 1928 ~ 1948 で、2013 の場合は 1929 になります。 - 1949年と2014年は1930年から1950年など...

今、私はいつ年を開始して終了するかについての基本的なループを持っていますが、それほど動的ではありません。

for($i=1928;$i<=date('Y');$i++)
{
    echo '<option value='.$i.'>'.$i.'</option>';
    if($i == '1948'){break;}
}
4

5 に答える 5

18

では、現在の年から 84 を引いた値と、現在の年から 64 を引いた値の間で計算したいと思いますか? 次のコードを使用します。

$firstYear = (int)date('Y') - 84;
$lastYear = $firstYear + 20;
for($i=$firstYear;$i<=$lastYear;$i++)
{
    echo '<option value='.$i.'>'.$i.'</option>';
}

編集:パフォーマンスのために更新されました。現在の年は、ループの前に決定されます (Pitchinnate のコメントによる)。

于 2012-10-01T20:45:05.677 に答える
3

これを試して:

$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 ループで date('Y') または評価を実行することはお勧めできません。これに関する記事

于 2012-10-01T20:46:39.160 に答える
2
for($i =0; $i <= 20 ;$i++)
{
    $year = date('Y') - 84 + $i;
    echo '<option value='.$year.'>'.$year.'</option>';
}
于 2012-10-01T20:48:26.033 に答える
2

このようなもの?

$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>';
}
于 2012-10-01T20:51:05.527 に答える
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>';
}
于 2012-10-01T20:58:52.393 に答える