2010-12-05 7 views
1

J'ai mis à des constantes, une année de début et une fin d'année,
j'ai donc construit une boucle while à la condition quephp incrémenter une valeur

if the start year is < than the current year increment until true. 

le problème que j'ai est que, au lieu de celui-ci va comme ceci:

1999,2000,2001,2002,2003,2004 

il va comme:

1999,2001,2003,2005,2007,2009 

ici est mon code:

function yearCount() 
{ 
    $yearBegin = START_YEAR; 
    $yearCurrent = CURRENT_YEAR; 
    while($yearBegin < $yearCurrent){ 
    echo "<option value=\"".$yearBegin++."\">".$yearBegin++."</option>"; 
    } 
} 

toutes les idées seraient très appréciées.

+1

montrez votre code s'il vous plaît. – RobertPitt

+0

Il y a quelque chose qui ne va pas dans votre code. –

+0

Nous avons besoin du code pour trouver le problème. – Shoe

Répondre

5

Vous sont incrémenter la valeur deux fois:

echo "<option value=\"".$yearBegin++."\">".$yearBegin++."</option>"; 

Chaque $yearBegin++ incrémente par un.

Utilisez une boucle à la place:

for ($yearBegin = START_YEAR; $yearBegin < CURRENT_YEAR; $yearBegin++) 
{ 
    echo "<option value=\"".$yearBegin."\">".$yearBegin."</option>"; 
} 
0

Vous incrémenter $ yearBegin deux fois, une fois dans la partie de la valeur, une fois dans la partie d'affichage ...

Vous devez changer il incrémente une seule fois

3
function yearCount() 
{ 
    $yearBegin = START_YEAR; 
    $yearCurrent = CURRENT_YEAR; 
    while($yearBegin < $yearCurrent){ 
    $this_year = $yearBegin++; 
    echo "<option value=\"".$this_year."\">".$this_year."</option>"; 
    } 
} 
0

Vous incrémenter deux fois, une fois la mise comme valeur, et la deuxième fois l'afficher dans la balise d'option

1

utiliser uniquement une seule fois ++, incrémenter

echo "<option value=\"".$yearBegin."\">".$yearBegin++."</option>"; 
4

à l'aide d'une boucle est généralement la meilleure façon de faire,

for($year=START_YEAR;$year<=CURRENT_YEAR;$year++) 
{ 
    //User the $year here 
} 

votre problème avec le code est que votre appel $yearBegin++ 2 fois dans le en boucle, l'amenant à incrémenter deux fois. L'utilisation de la boucle for est beaucoup plus propre que l'incrémentation est faite dans l'expression pour vous

Questions connexes