Ora impariamo a prendere decisioni (if) e ripetere azioni (while, for). Gli array memorizzano liste di dati.
Struttura if
Prende decisioni:
<?php
$voto = 7; // Esempio voto
if ($voto >= 6) {
echo "Promosso!";
} else {
echo "Bocciato.";
}
?>
Puoi annidare elseif per più casi:
if ($voto >= 9) {
echo "Ottimo!";
} elseif ($voto >= 7) {
echo "Buono";
} elseif ($voto >= 6) {
echo "Sufficiente";
} else {
echo "Ripeti";
}
Ciclo while
Ripete finché una condizione è vera:
<?php
$contatore = 1;
while ($contatore <= 5) {
echo "Numero: " . $contatore . "<br>";
$contatore++; // Incrementa
}
// Stampa: 1,2,3,4,5
?>
Ciclo for
Per cicli con numero noto di ripetizioni:
<?php
for ($i = 1; $i <= 5; $i++) {
echo "Numero: " . $i . "<br>";
}
?>
Array
Liste di dati:
<?php
// Array numerico (indici da 0)
$voti = array(8, 6, 9, 7);
// O così:
$voti[0] = 8;
$voti[1] = 6;
// Array associativo
$alunno = array(
"nome" => "Mario",
"cognome" => "Rossi",
"voto" => 8
);
?>
Approfondimento Array Associativo: come un “dizionario”
È un array dove invece di numeri (0,1,2…) usi parole come chiavi per trovare i valori.
Array NUMERICO (normale)
$voti = array(8, 6, 9, 7);
echo $voti[0]; // 8 (posizione 0)
echo $voti[2]; // 9 (posizione 2)
Problema: Devi ricordare le posizioni!
Array ASSOCIATIVO (dizionario)
$alunno = array(
"nome" => "Mario",
"cognome" => "Rossi",
"eta" => 16,
"voto" => 8
);
echo $alunno["nome"]; // Mario
echo $alunno["voto"]; // 8
Vantaggio: Usi nomi logici invece di numeri!
Sintassi completa
<?php
// Metodo 1: array()
$persona = array(
"nome" => "Anna",
"citta" => "Napoli",
"altezza" => 1.65
);
// Metodo 2: assegnazione diretta
$persona["nome"] = "Anna";
$persona["citta"] = "Napoli";
$persona["altezza"] = 1.65;
// Metodo 3: short syntax (PHP 5.4+)
$persona = [
"nome" => "Anna",
"citta" => "Napoli",
"altezza" => 1.65
];
?>
Esempi pratici
Dati Alunno:
$alunno = [
"nome" => "Luca",
"classe" => "3B",
"materie" => ["Matematica" => 8, "Italiano" => 7]
];
echo "Studente: " . $alunno["nome"] . "<br>";
echo "Voto mate: " . $alunno["materie"]["Matematica"];
Esempio completo:
<!DOCTYPE html>
<html>
<body>
<?php
$libro = [
"titolo" => "Harry Potter",
"letto" => true // Prova a cambiare in false!
];
echo "Libro: " . $libro["titolo"] . "<br>";
echo "Stato letto: ";
var_dump($libro["letto"]); // Mostra: bool(true)
if ($libro["letto"]) {
echo "<strong style='color:green'>Già letto! ✅</strong>";
} else {
echo "<strong style='color:orange'>Da leggere 📖</strong>";
}
?>
</body>
</html>
Funzioni per array
Esempio:
<?php
$voti = array(8, 6, 9, 7);
$numero_voti = count($voti); // 4
echo "Media voti: ";
$somma = 0;
foreach ($voti as $voto) {
$somma += $voto;
}
echo $somma / $numero_voti; // 7.5
?>
Approfondimento foreach
foreach è come un “assistente automatico” che scorre tutti gli elementi di un array, uno per uno.
$voti = array(8, 6, 9, 7); // Il nostro array
Sintassi:
foreach ($array as $variabile_temporanea) {
// Qui fai qualcosa con ogni elemento
}
Cosa succede nel nostro esempio:
foreach ($voti as $voto) {
$somma += $voto;
}
Passo 1: $voti[0] = 8 → $voto diventa 8 → $somma = 0 + 8 = 8
Passo 2: $voti[1] = 6 → $voto diventa 6 → $somma = 8 + 6 = 14
Passo 3: $voti[2] = 9 → $voto diventa 9 → $somma = 14 + 9 = 23
Passo 4: $voti[3] = 7 → $voto diventa 7 → $somma = 23 + 7 = 30
Fine: Ha visitato tutti e 4 gli elementi!
Visualizziamolo:
<?php
$voti = array(8, 6, 9, 7);
echo "Array voti: ";
print_r($voti); // Mostra: Array ( [0] => 8 [1] => 6 [2] => 9 [3] => 7 )
echo "<br>Scorrimento foreach:<br>";
$somma = 0;
foreach ($voti as $voto) {
echo "- Visito $voto, somma ora = " . ($somma + $voto) . "<br>";
$somma += $voto;
}
echo "<br>Somma finale: $somma";
?>
Output:
Array voti: Array ( [0] => 8 [1] => 6 [2] => 9 [3] => 7 )
Scorrimento foreach:
- Visito 8, somma ora = 8
- Visito 6, somma ora = 14
- Visito 9, somma ora = 23
- Visito 7, somma ora = 30
Somma finale: 30
Perché è utile?
- Non serve sapere la lunghezza dell’array (a differenza di
for). - Funziona anche con array associativi:
$alunni = array("Mario" => 8, "Luca" => 6, "Anna" => 9);
foreach ($alunni as $nome => $voto) {
echo "$nome ha preso $voto<br>";
}
// Mario ha preso 8
// Luca ha preso 6
// Anna ha preso 9
Confronto con for:
// CON for (devi sapere la lunghezza)
for ($i = 0; $i < count($voti); $i++) {
$somma += $voti[$i];
}
// CON foreach (più semplice!)
foreach ($voti as $voto) {
$somma += $voto;
}
Dunque il foreach è perfetto quando vuoi solo i VALORI, senza indici!
Esempio completo:
<!DOCTYPE html>
<html>
<head>
<title>Media classe</title>
</head>
<body>
<h1>Calcolo media voti</h1>
<?php
// Array voti classe
$votiClasse = array(7, 8, 6, 9, 7, 8, 5);
// Calcolo somma e media
$somma = 0;
foreach ($votiClasse as $voto) {
$somma += $voto;
}
$media = $somma / count($votiClasse);
// Decisione
if ($media >= 7) {
$giudizio = "Classe promossa!";
} else {
$giudizio = "Classe deve migliorare.";
}
echo "<p>Somma voti: $somma</p>";
echo "<p>Numero alunni: " . count($votiClasse) . "</p>";
echo "<p>Media: $media</p>";
echo "<p><strong>$giudizio</strong></p>";
?>
</body>
</html>
Esercizio
- Crea array con 5 voti casuali (usa
rand(1,10)). - Calcola media con
for. - Decidi se promossi (>6).
