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.