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