Il Ciclo While in PHP
Il ciclo while in PHP permette di ripetere un blocco di codice più volte finché una condizione specificata rimane vera.
Il ciclo while in PHP ripete un blocco di codice finché una data condizione rimane true. È lo strumento giusto quando non si sa in anticipo quante iterazioni sono necessarie — ad esempio, leggere righe da un database finché non ce ne sono più, oppure chiedere input finché non è valido. Quando si conosce in anticipo il numero di iterazioni, un ciclo for è generalmente più chiaro.
Questo articolo tratta la sintassi del ciclo while, come viene valutata la sua condizione, la forma alternativa con endwhile, i cicli infiniti e come uscirne, e le differenze tra while e il ciclo correlato do...while.
La Struttura del Ciclo While
La struttura di base del ciclo while in PHP è la seguente:
Sintassi del ciclo while in PHP
while (condition) {
// code to be executed
}La condition è qualsiasi espressione che PHP valuta come boolean (true o false). Il ciclo funziona in tre passi:
- La
conditionviene valutata prima di ogni iterazione. - Se è
true, il corpo viene eseguito una volta. - PHP torna al passo 1 e rivaluta la condizione.
Questo è importante: poiché il test avviene prima, il corpo viene eseguito zero volte se la condizione è false fin dall'inizio. Qualcosa all'interno del ciclo (o la condizione stessa) deve eventualmente rendere la condizione false, altrimenti il ciclo gira all'infinito — vedi Cicli Infiniti di seguito.
Sintassi alternativa con endwhile
PHP offre anche una forma con i due punti e endwhile, utile quando si mescolano cicli con HTML in un template:
<?php $i = 1; ?>
<ul>
<?php while ($i <= 3): ?>
<li>Item <?php echo $i; ?></li>
<?php $i++; ?>
<?php endwhile; ?>
</ul>Entrambe le forme si comportano in modo identico; scegliere quella che risulta più leggibile nel contesto.
Esempio di Utilizzo del Ciclo While
Consideriamo un esempio di utilizzo del ciclo while per stampare i numeri da 1 a 10. Ecco il codice:
Esempio PHP di Utilizzo del Ciclo While
In questo esempio, inizializziamo una variabile $i a 1 e impostiamo la condizione a $i <= 10. Il ciclo continua a girare finché $i è 10 o inferiore. In ogni iterazione, stampiamo il valore di $i e lo incrementiamo di 1. Non appena $i diventa 11, la condizione è false e il ciclo termina. L'output del codice è:
1 2 3 4 5 6 7 8 9 10Un esempio pratico: iterare su un array
while viene spesso usato con un contatore per scorrere un array con indice. La condizione ferma il ciclo alla lunghezza dell'array, in modo da non leggere oltre la fine:
<?php
$fruits = ["Apple", "Banana", "Cherry"];
$i = 0;
while ($i < count($fruits)) {
echo $fruits[$i] . "\n";
$i++;
}
?>Questo stampa ogni frutto su una propria riga:
Apple
Banana
CherryQuando si itera sugli elementi di un array in questo modo, un ciclo foreach è solitamente la scelta più pulita — elimina completamente il contatore manuale. Usare while quando il punto di arresto dipende da qualcosa di diverso da una lunghezza nota (ad esempio, dati ancora disponibili).
Cicli Infiniti e Come Uscirne
È possibile creare un ciclo infinito usando un'espressione che valuta sempre true nella condizione del ciclo while. Ad esempio:
Sintassi del ciclo while infinito in PHP
while (true) {
// code to be executed
}In questi casi, è necessario utilizzare l'istruzione break per uscire dal ciclo quando viene soddisfatta una determinata condizione. L'istruzione break interrompe immediatamente il ciclo e passa all'istruzione successiva dopo il ciclo. Ecco un esempio:
Cicli Infiniti e Come Uscirne
In questo esempio, il ciclo stampa i numeri da 1 a 10 e poi si ferma. Il test if combinato con break funge da vera condizione di uscita. L'istruzione correlata continue è diversa: invece di abbandonare il ciclo, salta il resto dell'iterazione corrente e torna direttamente al controllo della condizione.
while vs. do...while
Un ciclo while controlla la sua condizione prima di eseguire il corpo, quindi il corpo potrebbe non essere eseguito mai. Il ciclo do...while è la sua immagine speculare: controlla la condizione dopo il corpo, garantendo che il corpo venga eseguito almeno una volta.
<?php
$i = 100;
// Condition is false from the start — body never runs:
while ($i < 10) {
echo "while: $i\n";
$i++;
}
// Body runs once, then the condition is checked:
do {
echo "do-while: $i\n";
$i++;
} while ($i < 10);
?>Output:
do-while: 100Usare do...while quando l'azione deve avvenire prima di poter sapere se ripeterla — ad esempio, richiedere un input e chiedere di nuovo solo se non era valido.
Conclusione
Il ciclo while esegue un blocco di codice finché la sua condizione rimane true, con la condizione verificata prima di ogni iterazione. Ricordare le tre regole fondamentali per usarlo in sicurezza: inizializzare la variabile di controllo prima del ciclo, scrivere una condizione che alla fine diventi false, e aggiornare quella variabile (o usare break) all'interno del corpo. Per ulteriori opzioni sui cicli, vedere la panoramica dei cicli PHP, il ciclo for controllato da contatore, e gli operatori di confronto utilizzati per costruire le condizioni dei cicli.
Diagramma
graph TD;
A[While Loop Structure] --> B[Expression Evaluation];
B --> C{Execute Code};
C --> B;
B --> D[False];
D --> E[End Loop];