PHP

Array Associativi Multidimensionali

Lezione sugli Array Associativi Multidimensionali in PHP: spiegazione, esempi pratici e laboratorio con esercizi guidati.


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
TipoDescrizioneEsempio di accesso
Array associativo sempliceUn solo record con chiavi testuali$persona["nome"]
Array associativo multidimensionalePiù 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à.


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.