# PHP/Programmazione/Array

PHP
Copertina Tutti i moduli · Sviluppo
    CopertinaPHP/Copertina
* IntroduzionePHP/Introduzione
** StoriaPHP/Introduzione/Storia
** Come funzionaPHP/Introduzione/Come funziona
* Installazione e configurazionePHP/Installazione e configurazione
** InstallazionePHP/Installazione
*** LinuxPHP/Installazione/Linux
*** WindowsPHP/Installazione/Windows
*** Mac OS XPHP/Installazione/Mac OS X
** ConfigurazionePHP/Configurazione
* ProgrammazionePHP/Programmazione
** CommentiPHP/Programmazione/Commenti
** VariabiliPHP/Programmazione/Variabili
** OperatoriPHP/Programmazione/Operatori
** ArrayPHP/Programmazione/Array
** CondizioniPHP/Programmazione/Condizioni
** CicliPHP/Programmazione/Cicli
** Funzioni di basePHP/Programmazione/Funzioni di base
** Funzioni personalizzatePHP/Programmazione/Funzioni personalizzate
** Variabili globaliPHP/Programmazione/Variabili globali
*** $GLOBALSPHP/Programmazione/Variabili globali/$GLOBALS
*** $_GETPHP/Programmazione/Variabili globali/$_GET
*** $_POSTPHP/Programmazione/Variabili globali/$_POST
*** $_SESSIONPHP/Programmazione/Variabili globali/$_SESSION
*** $_COOKIEPHP/Programmazione/Variabili globali/$_COOKIE
*** $_SERVERPHP/Programmazione/Variabili globali/$_SERVER
** FilePHP/Programmazione/File
** ImmaginiPHP/Programmazione/Immagini
** Espressioni regolariPHP/Programmazione/Regexp
** Programmazione orientata agli oggettiPHP/Programmazione/OOP
* Programmazione avanzata con le classi PEARPHP/PEAR
* PHP e i databasePHP/Database
** Funzioni PHP per l'accesso ai database
*** Funzioni MySQLPHP/Programmazione/MySQL
**** Accesso al databasePHP/Programmazione/MySQL/Accesso al database
**** QueryPHP/Programmazione/MySQL/Query
**** Risultati di una queryPHP/Programmazione/MySQL/Risultati di una query
**** Liberare memoria dai risultati di una queryPHP/Programmazione/MySQL/Liberare memoria dai risultati di una query
**** Chiudi connessione al dbPHP/Programmazione/MySQL/Chiudi connessione al db
*** Funzioni PostgreSQLPHP/PostgreSQL
**** Accesso al database
**** Query
**** Risultati di una query
*** Funzioni Sqlite
**** Accesso al database
**** Query
**** Risultati di una query
** Database e object oriented
*** Abstraction Layers
**** PDO - Php Data Objects
**** PEAR::MDB2
**** Creole
*** Object Relational Mapping (ORM)
**** PEAR:DB_DataObject
**** PEAR:DB_Table
**** Propel
* PHP Design PatternPHP/PHP Design Pattern
* SmartyPHP/Smarty
* Sicurezza delle applicazioni web
* PHP CLI: Command Line InterpreterPHP/Cli
* PHP GTK2: applicazioni desktop in PHPPHP/Gtk
* Crediti
Modifica il sommario
Gli array (o vettori) sono delle strutture dati complesse che risultano molto comode per la codifica di particolari algoritmi.
Possiamo pensare agli array come a delle liste di elementi nelle quali ciascun elemento ha un valore e un indice (o chiave) numerico o alfanumerico che lo identifica nella lista.
Gli array possono essere numerici o associativi: nel primo caso ciascun elemento della lista è identificato unicamente da un indice numerico; nel secondo caso ogni valore ha un indice numerico e uno alfanumerico, che può quindi memorizzare altri dati particolari. In PHP non esistono matrici multidimensionali ma queste possono essere emulate creando strutture (anche molto complesse) con array di array, dal momento che ciascun elemento di un array può a sua volta essere un array:
Per inizializzare una variabile come array occorre dichiarare la variabile come tale e si utilizza la seguente notazione:
Per fare riferimento ad un elemento dell'array si usa la sintassi
dove indice è un numero oppure, come spiegato sopra, una chiave alfanumerica. Per aggiungere all'array un elemento con un indice n è sufficiente fare riferimento all'elemento stesso, come nell'esempio seguente:
Per inserire automaticamente un elemento alla fine della lista si usa invece la sintassi
L'indice assegnato così all'elemento appena inserito è pari all'elemento maggiore incrementato di uno. Se l'array è vuoto, viene assegnato indice 0.
Questo semplice spezzone di codice restituirà
Se vogliamo indicare la posizione in cui inserirlo, oppure la chiave a cui dovrà essere associato, dovremo inserire il valore usando la sintassi seguente:
Ovviamente se un elemento è già presente a tale indice o chiave questo verrà sovrascritto.
È possibile assegnare dei valori all'array già in fase di dichiarazione, passandoli come parametri alla funzione array che si occupa appunto di creare un nuovo array.
Questo spezzone di codice restituirà
proprio come nell'esempio fatto sopra.

## Funzioni utili
### print_r

print_r è una funzione molto utile in php, non solo per gli array, ma anche per molti altri tipi di oggetto. Nel caso degli array, comunque, è funzionale perché consente di stampare il contenuto degli stessi in modo molto utile per eseguire, ad esempio, un veloce debug.
Ad esempio
restituirà il seguente output:

### count

La funzione count, come suggerisce il nome, restituisce il numero di elementi contenuti nell'array.
avrà come output

### implode ed explode

Queste due funzioni lavorano con le stringhe e gli array. La sintassi è:
La prima restituisce una stringa ottenuta concatenando in ordine tutti gli elementi di array inframezzandoli dalla stringa collante. La seconda restituisce un array ottenuto separando stringa utilizzando delimitatore come separatore. Ad esempio:

### foreach

vedi anche qui
Questa non è proprio una funzione, ma una struttura di controllo. Funziona così:
Esempio:
oppure, se si vuole visualizzare anche la chiave dell'array si fà così:
Il primo esempio restituirà abc, il secondo
La chiave dell'array a è uguale a lettera 1. La chiave dell'array b è uguale a lettera 2. La chiave dell'array c è uguale a lettera 3.
Si può utilizzare anche per fare qualcosa di più che un semplice echo, per esempio possiamo cambiare il valore di un elemento nel caso sia uguale a...:
l'output sarà
Array ( [0] => a [1] => b [2] => c )
Array ( [0] => a [1] => mario [2] => c )

### unset

Unset distrugge la variabile ma non libera immediatamente la memoria!! La memoria verrà liberata quando ci sarà qualche ciclo di cpu non utilizzato oppure quando il programma finirà la memoria. Nel caso degli array, unset($mioarray); distruggerà l'array, con foreach invece distruggeremo i valori all'interno dell'array ma non l'array stesso. Infatti se:
l'output sarà:
unset array arr, arr e' ancora un array?
no arr non è un array
cancellati i valori dell'array mioarr con foreach, e' ancora un array?
si mioarr è un array
Attenzione! Se utilizziamo foreach per cancellare gli elementi dell'array, non reindicizzeremo l'array, quindi:
restituirà:
Array ( [0]=>uno [1]=>due [2]=>tre ) Array Array ( [3]=>ciccio ) l'array non viene reindicizzato come quando usiamo unset($mioarray); la stessa cosa se cancelliamo solo un elemento:
ecco che l'array sarà adesso:
Array ( [0]=>uno [2]=>tre ) per reindicizzarlo dovremo usare:
array_values restituisce tutti i valori contenuti nell'array e indicizza numericamente l'array destinatario. L'array ora conterrà:
Array ( [0]=>uno [1]=>tre )

### Altre funzioni

Per vedere tutte le funzioni riguardanti gli array, guardare nella sezione Array functions della Documentazione ufficiale