19 – 20 ciclo While
while (istruzione)
espressione;
Se devo eseguire più istruzioni allora la forma sarà:
while (istruzione)
{
espressione1;
espressione2;
…altre…;
}
Nei cicli è importante introdurre l’operatore di incremento ++ che incrementa di 1 un valore o una variabile
Ecco un esempio pratico:
$nl="";
echo "####################################"; // 5 volte a capo
$conta=1;
while ($conta<=5)
{
$conta++;
echo "Salto riga $conta".$nl;
}
echo "\n####################################";
Ricordarsi di:
assegnare un valore di partenza al contatore (nel nostro caso $conta=1;)
il conteggio, spesso, parte da zero
fare attenzione agli operatori di confronto <= è diverso da <
incrementare il contatore e metterlo nel posto giusto, se lo metto prima di echo la prima stampa del valore di $conta sarà 2 se lo metto dopo, sarà 1
un altro esempio:
echo "####################################";
$conta=1;
while (true)
{
while ($conta<=5)
{
echo "salto riga $conta". $nl;
if ($conta==3)
break;
$conta++;
}
break;
}
echo "\n####################################";
In questo caso l’istruzione nel primo while è sempre true, quindi il ciclo è infinito, viene interrotto dal comando break.
<select id="anno" name="annu">
$annoInizio=1930;
$annoFine=getdate()["year"];
while ($annoInizio<=$annoFine)
{
echo "<option value='$annoInizio'> $annoInizio </option>\n";
$annoInizio++;
}
</select>
Da notare la funzione getdate che prende la data dal server e restituendo un array si va a selezionare la chiave associativa del vettore [“year”].
Aggiungiamo un if che stabilisce un valore di default dell’anno, inizializzando una nuova variabile che chiameremo “annoDefault:
$annoInizio=1930;
$annoFine=getdate()["year"];
$annoDefault=1960;
while ($annoInizio<=$annoFine)
{
echo "<option value='$annoInizio'";
if ($annoInizio==$annoDefault)
echo "selected";
echo "> $annoInizio </option>\n";
$annoInizio++;
}</select>
Da notare come si riesce a spezzettare il comando echo con un if in mezzo ed il tag html option aperto nel primo echo e chiuso nel terzo dopo l’if.
Ecco il risultato dell’html