2012-10-01 14 views
5

Eventuali duplicati:
How to increment date with 1 (day/year) in PHP?anni di incremento automatico in ciclo ogni anno

Im non realmente sicuro dove cominciare con questo, ma nel tentativo di fare un inizio anno al 1928 e fermarsi a 1948 e per ogni anno gli anni aumentano di uno, dal 2012 gli intervalli di date sono 1928 - 1948 e per il 2013 sarebbe 1929 - 1949 e 2014 sarebbe 1930 - 1950 e così via ...

in questo momento ho solo un ciclo di base per quando iniziare e fermare gli anni, ma non è troppo dinamico, come ho detto im praticamente a un vuoto su dove iniziare altro poi data ('Y') + 1.

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

risposta

12

Quindi vuoi passare tra l'anno corrente meno 84 e l'anno corrente meno 64? Usa questo codice:

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

Modifica: aggiornato per la prestazione. L'anno corrente è determinato prima del ciclo (secondo il commento di Pitchinnate).

+0

si presenta come l'anno di inizio cambia troppo nel suo esempio – wgcrouch

+0

Ahh sì, grazie. Ho appena aggiornato il mio campione –

+0

Grazie amico, perfetto! – Suzed

2

Prova questo:

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

non è una buona idea avere la data ('Y') o eventuali valutazioni effettuate sul ciclo for, come si arriva calcolato ogni volta attraverso il ciclo. Article su questo.

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

Per favore aggiungi una spiegazione al tuo codice. –

1

Qualcosa di simile?

$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

Sembra di avere una costante con quanto indietro si desidera l'intervallo di date sia dal corrente esercizio che è possibile utilizzare per scrivere un ciclo che funziona per voi.

Dal momento che è il 2012 ora, e si desidera che la gamma inizi nel 1928 quando è 2012, allora possiamo usare 2012 - 1928 = 84, quindi l'anno in cui inizia l'intervallo dovrebbe essere sempre 84 in meno rispetto all'anno corrente.

Quindi potremmo scrivere codice come:

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

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