lunedì 30 aprile 2012

Introduzione al PHP: Gli Array - Accesso e Modifica

Hai visto fin ora come creare un array, la struttura dati principale all'interno del linguaggio PHP. Vedrai ora gli elementi base per la manipolazione di queste strutture dati.

Accedere ad un elemento
Il modo più semplice di accedere ad un elemento di un array è tramite la sua chiave. Supponi di avere l'array:

$mioArray = array( "Nome"=>"Ciro", "Cognome"=>"Pellegrino", "Indirizzo"=>array("Topo"=>"Via", "Strada"=>"Duca degli Abruzzi", "Civico"=>"25", "CAP"=>"72100", "Città"=>"Brindisi", "Prov"=>"BR"));



L'array $mioArray


$mioArray è una struttura dati costituita di 3 elementi, in cui i primi due sono di tipo stringa ed il terzo è esso stesso un array. E' possibile accedere al dato avente chiave Nome semplicemente scrivendo:

//produce in output il contenuto dell'elemento con chiave 'Nome'
echo $mioArray['Nome'];

Cosa accade invece per l'elemento con chiave Indirizzo? In questo caso, scrivendo $mioArray['Indirizzo'] stiamo accedendo ad un array, valore dell'elemento con chiave Indirizzo. Quindi potremmo scrivere:

$subArray = $mioArray['Indirizzo'];
echo $subArray['CAP'];

ottenendo in output il CAP dell'indirizzo. O più semplicemente:

//Array multidimensionale
echo $mioArray['Indirizzo']['CAP'];

Se il valore dell'elemento con chiave CAP è anch'esso un array, puoi continuare ad aggiungere delle chiavi per accedere ad elementi sempre più in profondità nella struttura. Nell'esempio sono utilizzate chiavi stringa, ma quanto detto vale anche per le chiavi numeriche.

Aggiungere o Modificare gli elementi di un array 
Gli array di PHP sono strutture dati estremamente dinamiche. E' quindi possibile ampliare le informazioni contenute nella struttura $mioArray aggiungendo, ad esempio, un recapito telefonico. Potremo quindi scrivere:

$telefono=array('Prefisso'=>'1234', 'Numero'=>'123456');
$mioArray['Telefono Casa']=$telefono;

o in alternativa

$mioArray['Telefono Casa'] = array('Prefisso'=>'1234', 'Numero'=>'123456');

L'array $mioArray modificato (aggiunta dell'elemento Telefono Casa)
in entrambi i casi è creata una struttura array contenente prefisso e numero, quindi questa struttura è inserita in $mioArray con chiave Telefono Casa. Se tale chiave è già presente nell'array, il corrispondente valore è aggiornato, ma dato che non esiste ancora questa viene messa in coda alla struttura esistente.

Volendo modificare il prefisso potremo scrivere:

$mioArray['Telefono Casa']['Prefisso']='4321';

Per estendere l'array è anche possibile utilizzare la forma delle parentesi quadre vuote (vedi il precedente post sugli array), ma in tal caso si ottiene una chiave numerica generata autonomamente da PHP con la regola secondo cui la chiave è il valore intero successivo il massimo valore presente fra le chiavi dell'array.

Rimuovere un elemento dall'array
Gli array possono anche essere ridotti rimuovendo elementi non più necessari. Ad esempio con

unset($mioArray['Indirizzo']);

è rimosso da $mioArray tutta quella struttura dati che è il valore corrispondente alla chiave 'Indirizzo'. Scompare quindi quell'array contenente la 'Strada', 'Civico', ecc.
L'array $mioArray cui è stato rimosso l'elemento Indirizzo
Nell'esempio è stato rimosso un elemento che è un array e sono scomparsi tanti dati. Ma non lasciarti confonder da ciò. Ciò che scompare è la chiave Indirizzo e il suo valore. Avresti potuto scrivere anche

unset($mioArray['Nome']);

e sarebbe scomparsa la chiave Nome con il relativo valore Ciro. O ancora

unset($mioArray['Telefono Casa']['Prefisso']);

nel qual caso sarebbe scomparsa la chiave Prefisso ed il relativo valore 1234