Il PHP è forse il linguaggio che ha la gestione piú intuitiva degli array.

Possiamo immaginare un array come un vettore di variabili al quale è possibile accedere tramite un indice. Ed è proprio quando si incomincia a parlare dell’indice che si capisce la potenza di questo linguaggio.

Il PHP è infatti in grado di gestire array che possono avere indici sia numerici che associativi e farli condividire nello stesso istante.

Possiamo infatti accedere ai vari elementi di un array tramite un indice numerico che identifica ogni elemento: il primo sarà alla cella 0 mentre l’ultimo sarà alla cella N-1, dove N è il numero di elementi che sono presenti nell’array.

Ma il PHP ci permette di associare ad ogni elemento dell’array anche una chiave composta da una stringa che poi potremo usare a nostra discrezione per accedere al elemento.

<?php
 
/* crea un nuovo array */
 
$frase = array ('hello', 'world', 'esclamazione' => '!!');
 
/* ed ecco come accedere ai vari elementi dell\'array */
 
echo "{$frase[0]} ", $frase[1], $frase['esclamazione'];
 
// stampa la stringa: hello world!!
 
?>

Forse non ve ne siete accorti ma in questo esempio di sole due righe ci sono moltissime novità. Innanzitutto abbiamo introdotto il metodo standard per creare un array in PHP. Non dovremo far altro che chiamare la funzione array() alla quale passeremo tutti i vari elementi nell’ordine con cui devono essere inseriti all’interno dell’array stesso.

Nel nostro esempio sono tutte stringhe ma avremmo potuto usare anche variabili, array e perfino altre chiamate alla funzione array().

Sempre nella stessa riga possiamo vedere per la prima volta come creare una chiave associativa. Nell’ultimo elemento abbiamo usato l’operatore => per associare all’elemento ‘!!’ la chiave ‘esclamazione’.

Nella seconda riga non facciamo altre che accedere all’array appena creato e fare un output.

Come possiamo vedere per accedere ad un elemento in particolare non dobbiamo far altro che scrivere il nome dell’array che lo contiene seguito dall’indice racchiuso tra delle parentesi quadre.

Durante l’output ho deciso di usare per i primi due accessi l’indice numerico mentre nell’ultimo ho deciso di usare la chiave associativa che avevo impostato durante la creazione dell’array.

Come ultima cosa volevo far notare le parentesi graffe nella prima stringa tra doppi apici. Queste non sono state messe per puro divertimento ma servono per aggirare una piccola debolezza dell’interprete del PHP che altrimenti non riuscirebbe a capire che stiamo usando una variabile e che deve perciò sostituirla con il suo contenuto.

A differenza di altri linguaggi che richiedo di riallocare la memoria o di conoscere altri dettagli tecnici, il PHP ci permette di aggiungere e rimuovere elementi con una semplicità unica.
Se volessimo aggiungere un elemento in fondo all’array del esempio qui sopra? La risposta è semplice, ci basterà scrivere il nome dell’array seguito dalle canoniche parentesi quadrate senza specificare alcun indice e eguagliare il tutto al valore o variabile che vogliamo che la cella assuma.

Inoltre nessuno ci impedisce di usare indici numerici o associativi a nostro piacimento, non serve che gli indici siano consecutivi è infatti possibile avere dei “buchi” tra un indice e il successivo. Questa tecnica può essere usata in alternativa a quella standard per creare un nuovo array. Sono però disponibili funzioni come array_push() che ci permettono di accodare piú elementi con la stessa istruzione al nostro array.

Ora che abbiamo aggiunto degli elementi come facciamo a togliere quelli che non ci interessano? Anche qui la funzione unset() viene in nostro soccorso, permettendoci di cancellare singoli elementi oppure interi array in un solo colpo.

<?php
 
/* crea due array vuoti */
 
$ar = array ();
 
$ra = (array) null;
 
$variabile = 'ciao';
 
/* aggiungere elementi al primo array
con la funzione array_push() */
 
array_push ($ar, 'uno', 10, $variabile);
 
/* aggiungere gli stessi elementi con
un\'altra tecnica al secondo array */
 
$ra[] = 'uno';
 
$ra[] = 10;
 
$ra[10] = $variabile; // crea un buco. gli elementi con indice
                      // da 2 a 9 non esistono
 
/* cancella un elemento dal secondo array */
 
unset ($ra[10]);
 
/* cancella un intero array */
 
unset ($ar);
 
?>

Come abbiamo gia detto ogni cella di un array essendo una variabile vera e propria può contenere anche altri array. Questo ci porta a parlare degli array multidimensionali. Usare questi tipi di array non differisce in alcun modo dagli array normali, non si deve far altro che usare di nuovo le parentesi quadrate ogni volta che accediamo ad un elemento.
Ecco alcuni esempi.

<?php
 
/* semplice array bidimensionale */
 
$bmp = array ( array (255, 12, 35),
 
array (23, 56, 0),
 
array (65, 65, 65) );
 
echo $bmp[1][2]; // stampa "0"
 
/* semplice array tridimensionale */
 
$arr3d = array (
 
array (
 
array (12, 11, 13, 14), array (12, 9) )
 
,
 
array (
 
array (12, 11, 13, 14), array (12, 9) )
 
,
 
array (
 
array (12, 11, 13, 14), array (1000, 9) )
 
);
 
echo $arr3d[2][1][0]; // stampa "1000"
 
?>

Volevo ricordare infine che il PHP fornisce al programmatore moltissime altre funzioni per lavorare con gli array. Per l’elenco completo fate riferimento all’immancabile guida di riferimento in italiano inglese.

vicius