back to top

Gli Array in PHP

Al termine della scorsa lezione abbiamo accennato agli array (o vettori), vediamo ora di capire insieme cosa sono e come funzionano le array in PHP.

Una array è una specie di "super-variabile" contentente una pluralità di valori invece di uno solo. Ma facciamo subito un paio esempi che valgono più di tante parole.

Poniamo di voler scrivere una sorta di lista di amici utilizzando, appunto, un array.

Uno dei modi per scrivere il nostro array è il seguente:

<?php
$amici = array("Luca", "Jacopo", "Felice", "Peppo");
?>

In sostanza abbiamo dato un nome al nostro array ed abbiamo inserito i vari elementi tra parentesi (dopo l’indicazione di "array") divisi da una virgola.

PHP associa automaticamente a ciascuno dei valori che abbiamo elencato un indice numerico, a partire da 0. Quindi, in questo caso, "Luca" assumerà l’indice 0, "Jacopo" l’indice 1, e così via.

Il risultato sarebbe stato il medesimo se avessimo scritto il nostro array in questa maniera:

<?php
$amici = array();
$amici[0] = "Luca";
$amici[1] = "Jacopo";
$amici[2] = "Felice";
$amici[3] = "Peppo";
?>

Come è evidente nel primo modo l’indice dei vari item dell’array veniva assegnato in automatico da PHP, mentre in questo secondo caso lo abbiamo esplicitato noi.

Nel nostro esempio abbiamo utlizzato un array con indice numerico, tuttavia è opportuno ricordare che l’indice può essere anche di tipo stringa. Facciamo un esempio di un array PHP contenente i dati di un ipotetico cliente in cui, appunto, l’indice degli elementi del nostro array è una stringa:

<?php
$cliente["azienda"] = "Microsoft";
$cliente["nome"] = "Bill";
$cliente["cognome"] = "Gates";
?>

Come avrete notato quando l’indice è di tipo stringa si usano gli apici anche all’interno della parentesi quadra (la regola è sempre la stessa: per i numeri non servono le virgolette, per le stringhe sì!).

Lavorare con gli array in PHP

Per riferirsi ad un singolo elemento dell’array si indica il nome dell’array seguito dall’indice contenuto fra parentesi quadre:

echo "Ciao " . $amici[1]; //output "Ciao Jacopo"

Volendo è anche possibile alterare l’array inizialmente definita sostituendo elementi o aggiungendone di nuovi.

Aggiungere un elemento ad un array

Per aggiungere un nuovo elemento alla nostra array (elemento che verrà posizionato in fondo agli altri già presenti) si usa:

$amici[] = "Daniele"; //questa linea aggiunge l'elemento "Daniele" al nostro array

Nello specifico del nostro esempio, questo nuovo elemento verrà posizionato in coda al nostro array ed assumerà l’indice 4. PHP, infatti, quando si trova di fronte un’istruzione di quel tipo (paretesi quadre vuote), va a cercare l’elemento dell’array con l’indice più alto e lo aumenta di 1 per creare quello nuovo.

Sostituire un elemento di un array

Qualora volessimo sostituire uno degli elementi già presenti useremo il nome del nostro array accompagnato dall’indice dell’elemento da sostituire tra le parentesi quadre. Poniamo ad esempio di voler sostituire l’elemento "Felice" con un nuovo elemento "Marcello". Ecco come fare:

$amici[2] = "Marcello"; //questa linea sostitisce l'elemento "Felice" con "Marcello"

Eliminare un elemento di un array

Per eliminare un elemento di un array PHP si utilizza la funzione unset() in questo modo:

unset($amici[2]);

Così facendo verrà eliminato l’elemento con chiave 2 all’interno della nostra array $amici.

La funzione count()

Nel nostro esempio abbiamo usato un array di dimensioni molto ridotte, ma in realtà capità spesso di avere di fronte array molto lunghe e può essere utile conscere il numero degli elementi che la compongono, in questo caso soccorre la funzione count() di PHP che useremo così:

$quanti_amici = count($amici);

Ciclare il contenuto di un array

Per stampare a video tutti gli elementi di un array PHP possiamo ricorre ad un ciclo: ad esempio potremmo utilizzare un ciclo for() utilizzando appunto la funzione count() vista poco sopra per impostarne il limite finale:

<?php
$amici = array("Luca", "Jacopo", "Felice", "Peppo", "Gino", "Mario", "Antonio", "Roberto", "Massimo", "Giuseppe", "Matteo", "Silvio", "Michele", "Franco", "Guido", "Piero");
$quanti_amici = count($amici);
for ($i=0; $i<$quanti_amici; $i++)
{
  echo $amici[$i] . "<br/>";
}
?>

Come abbiamo già accenato nella lezione sui cicli, tuttavia, le array prevedono un tipo speciale di ciclo: il ciclo foreach hce, sotto certi versi, risulta decisamente più semplice di for() per stampare il contenuto di un vettore.

Riprendiamo la nostra array $amici dei precedenti esempi e costruiamo un ciclo usando, appunto, foreach():

<?php
$amici = array("Luca", "Jacopo", "Felice", "Peppo", "Gino", "Mario", "Antonio", "Roberto", "Massimo", "Giuseppe", "Matteo", "Silvio", "Michele", "Franco", "Guido", "Piero");
foreach($amici as $amico)
{
  echo $amico . "<br/>";
}
?>

Il grosso vantaggio di foreach rispetto a for() è che non serve contare il numero degli elementi presenti in quanto PHP lo fa automaticamente. Per il resto il funzionamento è analogo a quello visto negli altri tipi di ciclo.

Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).