Array Associativi Multidimensionali
Un array associativo multidimensionale è un array che contiene al suo interno altri array associativi. Si usa per rappresentare più “record”, come un elenco di persone, prodotti o studenti.
In pratica: ogni elemento dell’array principale rappresenta un record (es. una persona), mentre ogni array interno contiene le informazioni del record (es. nome, età, città).
Creazione di un array multidimensionale
Ecco un esempio con tre persone:
<?php
$persone = [
[
"nome" => "Luca",
"cognome" => "Bianchi",
"eta" => 25,
"citta" => "Roma"
],
[
"nome" => "Giulia",
"cognome" => "Rossi",
"eta" => 22,
"citta" => "Milano"
],
[
"nome" => "Marco",
"cognome" => "Verdi",
"eta" => 28,
"citta" => "Torino"
]
];
?>
Accesso agli elementi
Ogni “record” interno è un array associativo, e si accede con due livelli di chiavi:
<?php
echo $persone[0]["nome"]; // Luca
echo $persone[1]["citta"]; // Milano
echo $persone[2]["eta"]; // 28
?>
La sintassi è: $array[indice_numerico]["chiave_testuale"]
👉 Prima l'indice dell'elemento, poi la chiave del campo.
Scorrere tutti gli elementi
Puoi usare un ciclo foreach per leggere ogni “record” e stampare i dati.
<?php
foreach ($persone as $indice => $persona) {
echo "Persona " . ($indice + 1) . ":<br>";
echo "Nome: " . $persona["nome"] . "<br>";
echo "Cognome: " . $persona["cognome"] . "<br>";
echo "Età: " . $persona["eta"] . "<br>";
echo "Città: " . $persona["citta"] . "<hr>";
}
?>
Stampare i dati in tabella HTML
Un modo ordinato per visualizzare i dati è usare una tabella HTML:
<?php
echo "<table border='1'>";
echo "<tr><th>Nome</th><th>Cognome</th><th>Età</th><th>Città</th></tr>";
foreach ($persone as $persona) {
echo "<tr>";
echo "<td>" . $persona["nome"] . "</td>";
echo "<td>" . $persona["cognome"] . "</td>";
echo "<td>" . $persona["eta"] . "</td>";
echo "<td>" . $persona["citta"] . "</td>";
echo "</tr>";
}
echo "</table>";
?>
Differenza tra array associativo semplice e multidimensionale
| Tipo | Descrizione | Esempio di accesso |
|---|---|---|
| Array associativo semplice | Un solo record con chiavi testuali | $persona["nome"] |
| Array associativo multidimensionale | Più record, ciascuno un array associativo | $persone[1]["cognome"] |
LABORATORIO
Gestione di Array Associativi Multidimensionali
In questo laboratorio creerai un elenco di studenti e imparerai a leggere e manipolare i loro dati. Gli esercizi sono organizzati in tre livelli di difficoltà.
- Editor PHP (VS Code, Notepad++, ecc.)
- Server locale (XAMPP, MAMP, Laragon)
- Browser per visualizzare l’output
1 Elenco studenti
Crea un file studenti_1.php e scrivi:
<?php
$studenti = [
["nome" => "Anna", "classe" => "3A", "media" => 7.5],
["nome" => "Marco", "classe" => "3B", "media" => 6.2],
["nome" => "Sara", "classe" => "3C", "media" => 8.0]
];
foreach ($studenti as $studente) {
echo $studente["nome"] . " (" . $studente["classe"] . ") - Media: " . $studente["media"] . "<br>";
}
?>
Obiettivo: comprendere come leggere dati da più array associativi interni.
2️ Aggiungere un nuovo studente e stampare tabella
Crea un file studenti_tabella.php:
<?php
$studenti = [
["nome" => "Anna", "classe" => "3A", "media" => 7.5],
["nome" => "Marco", "classe" => "3B", "media" => 6.2],
["nome" => "Sara", "classe" => "3C", "media" => 8.0]
];
// Aggiungi nuovo studente
$studenti[] = ["nome" => "Paolo", "classe" => "3D", "media" => 5.9];
// Stampa tabella
echo "<table border='1'>";
echo "<tr><th>Nome</th><th>Classe</th><th>Media</th></tr>";
foreach ($studenti as $studente) {
echo "<tr>";
echo "<td>" . $studente["nome"] . "</td>";
echo "<td>" . $studente["classe"] . "</td>";
echo "<td>" . $studente["media"] . "</td>";
echo "</tr>";
}
echo "</table>";
?>
Obiettivo: imparare ad aggiungere un nuovo array interno e visualizzare i dati in formato tabellare.
3 Calcolo dell’esito per ogni studente
Crea un file studenti_esito.php e scrivi:
<?php
$studenti = [
["nome" => "Anna", "classe" => "3A", "media" => 7.5],
["nome" => "Marco", "classe" => "3B", "media" => 6.2],
["nome" => "Sara", "classe" => "3C", "media" => 5.3],
["nome" => "Paolo", "classe" => "3D", "media" => 4.8]
];
echo "<table border='1'>";
echo "<tr><th>Nome</th><th>Classe</th><th>Media</th><th>Esito</th></tr>";
foreach ($studenti as $studente) {
$esito = ($studente["media"] >= 6) ? "Promosso" : "Bocciato";
echo "<tr>";
echo "<td>" . $studente["nome"] . "</td>";
echo "<td>" . $studente["classe"] . "</td>";
echo "<td>" . $studente["media"] . "</td>";
echo "<td>" . $esito . "</td>";
echo "</tr>";
}
echo "</table>";
?>
Obiettivo: aggiungere logica condizionale all’interno del ciclo per calcolare e mostrare l’esito di ogni studente in base alla media.
⃣ Sfida finale
Aggiungi un campo assenze a ciascun studente e considera bocciato chi ha più di 10 assenze, anche se la media è sufficiente. Poi mostra la tabella completa con le nuove regole.