Esercizi sui vettori associativi (esempio)

  1. Crea una pagina in cui provare il codice mostrato sotto modificando il contenuto del vettore a piacere
  2. Aggiungi alla pagina due caselle di testo. La prima per la chiave e la seconda per il valore. Ad ogni invio aggiungi al vettore la chiave e il valore passati e stampa tutto il vettore. Per aggiungere al vettore una nuova coppia chiave/valore basta scrivere ad esempio $vettore["Fabio"] = "4 Maggio";
  3. Stampa il vettore precedente ordinato per chiave. Per ordinare un vettore associativo che funzione puoi utilizzare?
  4. Stampa il vettore precedente ordinato per valore.
  5. Stampa i valori del vettore in una tabella, mostrando la chiave nella prima colonna e il valore nella seconda colonna

Come funzionano?

I vettori sono delle variabili che contengono un insieme di valori. Abbiamo già visto:

    $vettore= array("Hello World", "Ciao Mondo", "Hallo Welt");

Per leggere/scrivere/modificare i valori del vettore uso com indice la posizione. Ad esempio per stampare la posizione 1:

    echo $vettore[1];

In questo caso l'indice è numerico ma è possibile usare anche degli indici di testo. Perché?
Supponi di dovere memorizzare la data di nascita dei tuoi compagni di classe. Marco compie gli anni il 12 Febbraio, Giulio il 7 ottobre e Marina il 4 Novembre. In questo caso l'indice dell'elenco è il nome del compagno di classe e il valore è la data. L'indice del vettore si dice anche chiave. Come si scrive in php?

    $vettore = array("Marco"=>"12 Febbraio", "Giulio"=>"7 Ottobre", "Joe"=>"4 Novembre");

Ora se voglio stampare la data di nascita di Giulio uso il nome come chiave (indice):

    echo $vettore["Giulio"]; // stampa "7 Ottobre"

Per scorrere e stampare tutto il vettore associativo si usa spesso il foreach che consente di recuperare, riga per riga, sia la chiave che il valore

    foreach($vettore as $chiave => $valore) {
        echo "$chiave: $valore <br>";
    }

Potete provare il codice precedente e trovare ulteriori esempi in questa pagina di w3schools.