2012-10-01 10 views
5

Powiel możliwe:
How to increment date with 1 (day/year) in PHP?roku Auto przyrost pętli rocznie

Im naprawdę nie wiem od czego zacząć z tym, ale im próbuje zrobić początek roku w 1928 i zatrzymują się na 1948 i na każdy rok lata zwiększają się o jeden, więc od 2012 roku zakresy dat to 1928 - 1948, a na rok 2013 to lata 1929 - 1949 i 2014 to lata 1930 - 1950 i tak dalej ...

w tej chwili mam tylko podstawową pętlę do rozpoczęcia i zatrzymania lat, ale nie jest zbyt dynamiczny, jak powiedziałem im prawie w pustym miejscu, gdzie zacząć inną datę ("Y") + 1.

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

Odpowiedz

12

Czy chcesz, aby przejść między bieżącym rokiem minus 84 a bieżącym rokiem minus 64? Użyj tego kodu:

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

Edytuj: zaktualizowano dla wydajności. Aktualny rok jest ustalany przed pętlą (według komentarza Pitchinnate'a).

+0

wygląda początek roku zmienia się też w jego przykładem – wgcrouch

+0

Ahh tak, dzięki. Właśnie zaktualizowałem moją próbkę –

+0

Dzięki stary, idealny! – Suzed

2

Spróbuj tego:

$year = date('Y'); 
$add = $year - 2012; 
$min = 1928 + $add; 
$max = $min + 20; 
for($i=$min;$i<=$max;$i++) 
{ 
    echo '<option value='.$i.'>'.$i.'</option>'; 
} 

I nie jest to dobry pomysł, aby mieć datę („Y”) lub jakiekolwiek oceny odbywa się na pętli, jak robi obliczana za każdym razem przez pętlę. Article o tym.

2
for($i =0; $i <= 20 ;$i++) 
{ 
    $year = date('Y') - 84 + $i; 
    echo '<option value='.$year.'>'.$year.'</option>'; 
} 
+0

Proszę dodać wyjaśnienie do swojego kodu. –

1

Coś takiego?

$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>'; 
} 
2

Wygląda na to, że masz stały się jak daleko chcesz zakres dat, aby być w bieżącym roku, które można wykorzystać, aby napisać pętlę, która będzie pracować dla Ciebie.

Od 2012 roku, a chcesz, aby zasięg rozpoczął się w 1928 roku, kiedy jest rok 2012, możemy użyć roku 2012 - 1928 = 84, więc rok, w którym zaczyna się zakres, powinien zawsze być o 84 mniejszy niż rok bieżący.

Dlatego możemy napisać kod jak:

$startingYear = date('Y') - 84; 
$endingYear = $startingYear + 20; 

for ($i = $startingYear;$i <= $endingYear;$i++) 
{ 
    echo '<option value='.$i.'>'.$i.'</option>'; 
}