- 01. Configurare PSPad
- 02. Hello World!
- 03. Lessico
- 04. Spazi e commenti
- 05. Variabili
- 06. Tipi di dato
- 07. Costanti
- 08. Array
- 09. Array multidimensionali
- 10. Stringhe
- 11. Operatori
- 12. Strutture di controllo
- 13. Funzioni
- 14. Librerie e file esterni
- 15. Oggetti
- 16. Gli Oggetti e i Membri statici
- 17. Oggetti e Costanti
- 18. Gli Oggetti e l'Ereditarietà
09. Array multidimensionali
Vediamo ora gli array multidimensionali e un metodo per gestirli.
Immaginate un array multidimensionale, come un array che contiene altri array.
Anche qui non c'è un limite preciso alla dimensione che può
assumere un array multidimensionale, ma vediamo subito un esempio per farvi capire di che si tratta.
Immaginate di dover mettere in un unico array una serie di dati di questo genere :
ID | Nome | Cognome | Settore | Stipendio |
1 | Mario | Rossi | Design | 1.250 |
2 | Giacomo | Bernardini | Progettazione | 1.550 |
3 | Luca | Manfredi | Marketing | 1.350 |
Un buon metodo per inserire questi dati in un array, è utilizzare un indice per la prima dimensione, ed una chiave per la seconda dimensione (N.B. : potete usare anche 3 dimensioni e vedere la base di dati come un cubo, ma non è questo il caso del nostro esempio).
$impiegati[1]["nome"] = "Mario"; $impiegati[1]["cognome"] = "Rossi"; $impiegati[1]["settore"] = "Design"; $impiegati[1]["stipendio"] = 1250; $impiegati[2]["nome"] = "Giacomo"; $impiegati[2]["cognome"] = "Bernardini"; $impiegati[2]["settore"] = "Progettazione"; $impiegati[2]["stipendio"] = 1550; $impiegati[3]["nome"] = "Luca"; $impiegati[3]["cognome"] = "Manfredi"; $impiegati[3]["settore"] = "Marketing"; $impiegati[3]["stipendio"] = 1350; echo "<table width=\"600\" border=\"0\" cellspacing=\"5\" cellpadding=\"1\">\n"; for ($i = 1; $i <= count($impiegati); $i++) { echo "\t<tr>\r"; while (list($chiave, $valore) = each($impiegati[$i])) { $chiave = mb_convert_case($chiave, MB_CASE_TITLE); // La funzione sopra converte la prima lettera di $chiave in Maiuscola echo "\t\t<td>$chiave : $valore</td>\r"; } echo "\t</tr>\r"; } echo "</table>\n";
Il codice produce questo risultato.
I caratteri di escape "\n", "\t" e "\r", li ho usati per dare un indentazione e una formattazione ordinata al sorgente
della pagina HTML che PHP produce, ottima abitudine per velocizzare le fasi di debug.
Infine vediamo la semplice ma efficace "array_search()".
$array = array(); array_push($array, "mela"); array_push($array, "fragola"); array_push($array, "limone"); array_push($array, "fragola"); array_push($array, "melone"); array_push($array, "fragola"); array_push($array, "limone"); echo array_search("fragola", $array) . "<br />\n"; echo array_search("limone", $array) . "<br />\n"; echo array_search("mela", $array) . "<br />\n"; echo array_search("anguria", $array) . "<br />\n";
Il codice produce come output "1", "2" e infine "0".
La funzione cerca la stringa e ritorna la posizione della prima occorrenza trovata, senza quindi tener conto di eventuali doppioni.
La quarta chiamata ad "array_search()", invece, non produce nessun output, in quanto la funzione torna il valore booleano "false" che
echo non stampa.