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