PHP: Parte 3 - IF, Switch e Loop


Strutture di Controllo del Flusso in PHP: Far Decidere al Tuo Codice
Benvenuti al terzo appuntamento con la nostra guida completa a PHP! Nei post precedenti abbiamo introdotto PHP, configurato il nostro ambiente di sviluppo e imparato a gestire i dati con variabili e costanti. Ora è il momento di un concetto fondamentale che darà vita e "intelligenza" ai tuoi script: le strutture di controllo del flusso.
Immagina di voler che il tuo programma faccia qualcosa solo se una certa condizione è vera, o che ripeta un'azione più volte. Le strutture di controllo del flusso sono gli strumenti che ti permettono di fare proprio questo, guidando l'esecuzione del codice in base a logiche specifiche.
1. Condizioni: IF, ELSEIF, ELSE – Prendere Decisioni
Le istruzioni condizionali ti permettono di eseguire blocchi di codice diversi a seconda che una o più condizioni siano vere o false.
IF Statement
L'istruzione if
è la più semplice. Esegue un blocco di codice solo se la condizione specificata è vera.
Sintassi:
if (condizione) {
// Codice da eseguire se la condizione è VERA
}
Esempio:
<?php
$eta = 20;
if ($eta >= 18) {
echo "Sei maggiorenne.";
}
?>
IF...ELSE Statement
L'istruzione if...else
ti permette di specificare un blocco di codice da eseguire se la condizione è vera e un altro blocco da eseguire se la condizione è falsa.
Sintassi:
if (condizione) {
// Codice da eseguire se la condizione è VERA
} else {
// Codice da eseguire se la condizione è FALSA
}
Esempio:
<?php
$ora = date("H"); // Ottiene l'ora corrente (formato 24 ore)
if ($ora < 12) {
echo "Buongiornissimo!";
} else {
echo "Buonasera!";
}
?>
IF...ELSEIF...ELSE Statement
Quando hai più di due possibili risultati, puoi usare l'istruzione if...elseif...else
. PHP valuterà le condizioni in ordine e eseguirà il primo blocco per cui la condizione risulta vera. Se nessuna condizione è vera, verrà eseguito il blocco else
(se presente).
Sintassi:
if (condizione1) {
// Codice se condizione1 è VERA
} elseif (condizione2) {
// Codice se condizione2 è VERA
} elseif (condizione3) {
// Codice se condizione3 è VERA
} else {
// Codice se NESSUNA delle condizioni precedenti è VERA
}
Esempio:
<?php
$punteggio = 75;
if ($punteggio >= 90) {
echo "Voto: A (Eccellente)";
} elseif ($punteggio >= 80) {
echo "Voto: B (Molto buono)";
} elseif ($punteggio >= 70) {
echo "Voto: C (Buono)";
} elseif ($punteggio >= 60) {
echo "Voto: D (Sufficiente)";
} else {
echo "Voto: F (Insufficiente)";
}
?>
2. Switch Case: Alternative Multiple
L'istruzione switch
è un'alternativa più pulita e leggibile all'if...elseif...else
quando devi confrontare una singola variabile (o espressione) con molti valori diversi.
Sintassi:
switch (espressione) {
case valore1:
// Codice da eseguire se espressione == valore1
break;
case valore2:
// Codice da eseguire se espressione == valore2
break;
default:
// Codice da eseguire se nessun caso corrisponde
break;
}
-
case
: Definisce un valore con cui confrontare l'espressione. -
break;
: È cruciale! Termina l'esecuzione del bloccoswitch
e impedisce il "fall-through" (cioè, l'esecuzione dei casi successivi anche se non corrispondono). -
default:
: (Opzionale) Il codice in questo blocco viene eseguito se nessuncase
corrisponde all'espressione.
Esempio:
<?php
$colore = "rosso";
switch ($colore) {
case "rosso":
echo "Hai scelto il colore rosso.";
break;
case "blu":
echo "Hai scelto il colore blu.";
break;
case "verde":
echo "Hai scelto il colore verde.";
break;
default:
echo "Colore non riconosciuto.";
break;
}
?>
3. Cicli (Loop): Ripetere le Azioni
I cicli ti permettono di eseguire un blocco di codice ripetutamente, finché una condizione non diventa falsa o per un numero predefinito di volte.
For Loop
Il ciclo for
è ideale quando sai esattamente quante volte vuoi che il ciclo venga eseguito.
Sintassi:
for (inizializzazione; condizione; incremento/decremento) {
// Codice da eseguire ripetutamente
}
-
inizializzazione
: Eseguita una sola volta all'inizio del ciclo. -
condizione
: Valutata all'inizio di ogni iterazione. Se è vera, il ciclo continua; se è falsa, il ciclo termina. -
incremento/decremento
: Eseguito alla fine di ogni iterazione.
Esempio:
<?php
for ($i = 0; $i < 5; $i++) {
echo "Il numero è: " . $i . "<br>";
}
// Output:
// Il numero è: 0
// Il numero è: 1
// Il numero è: 2
// Il numero è: 3
// Il numero è: 4
?>
While Loop
Il ciclo while
esegue un blocco di codice finché la condizione specificata rimane vera. È utile quando non sai in anticipo quante iterazioni saranno necessarie.
Sintassi:
while (condizione) {
// Codice da eseguire ripetutamente
}
Importante: Assicurati che la condizione diventi falsa ad un certo punto, altrimenti avrai un "loop infinito"!
Esempio:
<?php
$i = 1;
while ($i <= 5) {
echo "Il numero è: " . $i . "<br>";
$i++; // Incrementa $i per evitare un loop infinito
}
// Output uguale all'esempio for loop
?>
Do-While Loop
Il ciclo do-while
è simile al while
, ma garantisce che il blocco di codice venga eseguito almeno una volta, perché la condizione viene valutata alla fine di ogni iterazione.
Sintassi:
do {
// Codice da eseguire almeno una volta
} while (condizione);
Esempio:
<?php
$i = 6; // Inizializzo $i a un valore che renderebbe falsa la condizione del while
do {
echo "Questo messaggio verrà stampato almeno una volta. Numero: " . $i . "<br>";
$i++;
} while ($i <= 5); // La condizione è falsa, quindi il ciclo si ferma dopo la prima esecuzione
// Output:
// Questo messaggio verrà stampato almeno una volta. Numero: 6
?>
Foreach Loop
Il ciclo foreach
è specificamente progettato per iterare su array e oggetti, rendendo molto semplice l'accesso a ogni elemento. Ne parleremo più approfonditamente nel post dedicato agli array.
Sintassi (per array):
foreach ($array as $valore) {
// Codice da eseguire per ogni $valore nell'array
}
// O con chiave e valore:
foreach ($array as $chiave => $valore) {
// Codice da eseguire per ogni $chiave e $valore nell'array
}
Esempio:
<?php
$frutti = ["mela", "banana", "ciliegia"];
foreach ($frutti as $frutto) {
echo "Mi piace la " . $frutto . "<br>";
}
// Output:
// Mi piace la mela
// Mi piace la banana
// Mi piace la ciliegia
?>
4. Break e Continue: Controllo Avanzato dei Cicli
-
break
: Termina immediatamente l'esecuzione del ciclo corrente e il controllo del programma passa all'istruzione successiva al ciclo. -
continue
: Salta l'iterazione corrente del ciclo e passa immediatamente all'iterazione successiva.
Esempio con break
:
<?php
for ($i = 0; $i < 10; $i++) {
if ($i == 5) {
echo "Ho raggiunto il 5, esco dal ciclo!<br>";
break; // Il ciclo si ferma qui
}
echo "Il numero è: " . $i . "<br>";
}
// Output: 0, 1, 2, 3, 4, Ho raggiunto il 5, esco dal ciclo!
?>
Esempio con continue
:
<?php
for ($i = 0; $i < 5; $i++) {
if ($i == 2) {
echo "Salto il numero 2!<br>";
continue; // Salta il resto del codice in questa iterazione e passa alla successiva
}
echo "Il numero è: " . $i . "<br>";
}
// Output: 0, 1, Salto il numero 2!, 3, 4
?>
In Sintesi
Le strutture di controllo del flusso sono essenziali per creare programmi dinamici e reattivi. Con if/else
, switch
e i vari tipi di loop
(for
, while
, do-while
, foreach
), hai gli strumenti per far sì che il tuo codice prenda decisioni e ripeta azioni in modo efficiente.
Pratica questi concetti, sono la spina dorsale di qualsiasi logica di programmazione!
Prossimi Passi
Ora che il tuo codice può "pensare" e "ripetere", nel prossimo post esploreremo le funzioni in PHP. Imparerai a organizzare il tuo codice in blocchi riutilizzabili, rendendolo più modulare, leggibile e facile da mantenere.
Non mancare al prossimo capitolo!