Gli Array - Tipi di dati in PHP
Gli array in PHP sono un tipo di dato che permette di memorizzare un insieme di valori, che possono essere di qualsiasi tipo.
Gli array possono essere creati utilizzando la funzione array()
o utilizzando le parentesi quadre []
Sintassi degli array in php:
<?php
// Creare un array utilizzando la funzione array()
$array_example1 = array('Primo', 'Secondo', 'Terzo' , 'Quarto', 'Quinto');
var_dump(array_example1);
// Creare un array utilizzando le parentesi quadre []
$array_example2 = ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio'];
echo $array_example2[1]; // output: Febbraio
?>
Indice
Gli Array Associativi
Gli array associativi in PHP sono un tipo di array che utilizza dei valori di stringa, anziché indici numerici, come chiavi per accedere ai loro elementi. Ciò significa che, al contrario degli array numerici, non è necessario specificare un indice numerico per accedere a un elemento di un array associativo. Invece, è possibile utilizzare una stringa come chiave per accedere all'elemento.
Ecco un esempio di come si potrebbe creare un array associativo in PHP:
// Array Associativo
$utente = [
"nome" => "Donato",
"cognome" => "Pirolo",
"eta" => 30,
];
// Stampa il valore associato alla chiave "Donato"
echo $utente ["nome"]; // output: "Donato"
// Concateniamo nome e cognome
echo $utente["nome"] . " " . $utente["cognome"]; // output: Donato Pirolo
// Se vogliamo accedere ad un array associativo utilizzando i doppi apici dobbiamo usare {}
echo "Io sono {$utente['nome']} {$utente['cognome']}"; // Io sono Donato Pirolo32
// Modifica il valore associato alla chiave "chiave3"
$utente["eta"] = 32;
// Stampa il valore associato alla chiave "30" (che ora ha il valore "32")
echo $utente["eta"]; // output: 32
La funzione Extract() sugli array Associativi
La funzione extract()
in PHP consente di estrarre le variabili da un array associativo, e di assegnarle a variabili con lo stesso nome di chiave. Facciamo un esempio
// funzione extract() su array associativo
$utente_example = [
"nome" => "Donato",
"cognome" => "Pirolo",
"eta" => 30,
];
// Estrazione delle chiavi - valori
extract($utente_example);
echo "Ciao sono $nome $cognome ed ho $eta anni"; //output: Ciao sono Donato Pirolo ed ho 30 anni
È possibile anche specificare un prefisso da utilizzare per le variabili estratte, ad esempio:
extract($utente_example , EXTR_PREFIX_ALL, 'estrazione_');
echo "Ciao sono $estrazione_nome $estrazione_cognome"; // output: Ciao sono Donato Pirolo
Aggiungere e rimuovere elementi da un Array
Per aggiungere un elemento ad un array esistente il metodo più semplice è
array_push(): Aggiungere elementi alla fine dell'array
Con array_push() possiamo aggiungere elementi alla fine di un array
$persone = ['Donato'];
array_push($persone,'Martina','Roberta'); //aggiunge elementi alla fine
var_dump($persone);
/* OUTPUT :
array(3) {
[0]=>
string(6) "Donato"
[1]=>
string(7) "Martina"
[2]=>
string(7) "Roberta"
}
*/
array_pop($persone); // rimuovere ultimo elemento della lista
var_dump($persone); // output: Michela Genoveffa Donato Martina Ginevra
array_shift($persone); // rimuovere primo elemento della lista
var_dump($persone); // output: Genoveffa Donato Martina Ginevra
array_unshift(): Aggiungere elementi all'inizio dell'array
Con array_unshift() possiamo aggiungere elementi all'inizio di un array
$persone = ['Donato'];
array_unshift($persone,'Martina','Roberta'); //aggiunge elementi alla fine
var_dump($persone);
/* OUTPUT :
array(3) {
[0]=>
string(7) "Martina"
[1]=>
string(7) "Roberta"
[2]=>
string(6) "Donato"
}
*/
array_pop(): Rimuovere ultimo elemento della lista
Con array_pop() possiamo rimuovere l'ultimo elemento di un array
$persone = ['Donato', 'Martina', 'Roberta'];
array_pop($persone); //rimuove l'ultimo elemento della lista
var_dump($persone);
/* OUTPUT :
array(2) {
[0]=>
string(6) "Donato"
[1]=>
string(7) "Martina"
}
*/
array_shift(): Rimuovere il primo elemento della lista
Con array_shift() possiamo rimuovere il primo elemento di un array
$persone = ['Donato', 'Martina', 'Roberta'];
array_shift($persone); //rimuove l'ultimo elemento della lista
var_dump($persone);
/* OUTPUT :
array(2) {
[0]=>
string(7) "Martina"
[1]=>
string(7) "Roberta"
}
*/
unset(): Rimuovere in base all'indice numerico o alla chiave, non riordinando l'indice.
Con unset() possiamo rimuovere gli elementi in base all'indice numerico o la chiave, tenendo a mente che rimuove anche l'indice e non lo riordina.
$persone = ['Donato', 'Martina', 'Roberta', 'Sabrina', 'Michela', 'Selly'];
unset($persone[2]); //rimuove l'elemento che si trova in 3 posizione della lista
var_dump($persone);
/* OUTPUT :
array(5) {
[0]=>
string(6) "Donato"
[1]=>
string(7) "Martina"
[3]=> // come possiamo vedere non l'indice 2 non c'è poichè è stato rimosso
string(7) "Sabrina"
[4]=>
string(7) "Michela"
[5]=>
string(5) "Selly"
}
*/
array_values() : Riordinare l'indice dopo la rimozione con unset.
Con array_values() possiamo riordinare l'indice dopo aver rimosso un elemento tramite indice. In questo esempio, con unset abbiamo rimosso per posizione d'indice il l'elemento che si trova in 3a posizione, e dopo abbiamo ridichiarato la variabile alfabeto attribuendogli la funzione array_values() che andrà a lavorare su una copia dell'array dato in input.
$persone = ['Donato', 'Martina', 'Roberta', 'Sabrina', 'Michela', 'Selly'];
unset($persone[2]); //rimuove l'elemento che si trova in 3 posizione della lista
$persone = array_values($persone);
var_dump($persone);
/* OUTPUT :
array(5) {
[0]=>
string(6) "Donato"
[1]=>
string(7) "Martina"
[2]=> // Qui possiamo vedere l'indice riordinato
string(7) "Sabrina"
[3]=>
string(7) "Michela"
[4]=>
string(5) "Selly"
}
*/
array_splice() : Rimuovere più elementi e ri-odinare l'indice.
Con array_splice() possiamo rimuovere più elementi stabilendo l'array da modificare, il parametro di inizio (da dove iniziare a rimuovere) e quanti elementi rimuovere, alla fine ritroveremo il nostro indice ri-aggiornato correttamente.
$persone = ['Donato', 'Martina', 'Roberta', 'Sabrina', 'Michela', 'Selly'];
array_splice($persone,2,3); //rimuovere dall'array persone gli elementi a partire dal 3° elemento e rimuovere 3 elementi (a partire da quello).
var_dump($persone);
/* OUTPUT :
array(3) {
[0]=>
string(6) "Donato"
[1]=>
string(7) "Martina"
[2]=>
string(5) "Selly"
}
*/
Array Unpacking : Estrarre gli elementi da un array
Per array unpacking si intende spacchettare un array, in parole povere estrarre gli elementi da un array. Questo ci torna particolarmente utile quando vogliamo estendere un array. Possiamo estendere un array usando l'operatore spread (...), facciamo un esempio
// unpacking array
$arr_unpacking = [10,20,30];
$arr_extend = [...$arr_unpacking,40,50]; //usiamo l'operatore ... spread per estendere l'array
var_dump($arr_extend);
/* Output : Estendere l'array
array(5) {
[0]=>
int(10)
[1]=>
int(20)
[2]=>
int(30)
[3]=>
int(40)
[4]=>
int(50)
}
*/
Array multidimensionali: Gli array che contengono altri array
Come abbiamo già visto in precedenza, gli array sono collezioni di elementi che possono contenere anche altri array al suo interno e vengono chiamati array multidimensionali (in poche parole array innestati)
// array multidimensionale
//Creazione di un array che contiene altri 3 array al suo interno
$arr_multidimensionale = [
['SKU' => 'pr0001','PRODUCT_NAME' => 'Prodotto 1','PRICE' => 10,'VALUE' => '€'],
['SKU' => 'pr0002','PRODUCT_NAME' => 'Prodotto 2','PRICE' => 20,'VALUE' => '€'],
['SKU' => 'pr0003','PRODUCT_NAME' => 'Prodotto 3','PRICE' => 30,'VALUE' => '€']
];
// Accesso tramite indice numerico al 3° array e all'elemento con chiave 'Product_name'
echo $arr_multidimensionale[2]['PRODUCT_NAME'];
// Output : Prodotto 3
Type Casting: l'assegnazione forzata del tipo di dato di una variabile
In php non dobbiamo esplicitamente dichiarare il tipo di una variabile, poichè é php che si occupa di definire il tipo di variabile, ma può capitare a volte di voler dichiarare il tipo di variabile, ad esempio, può capitare di avere un tipo di variabile stringa e volerlo convertire in un intero.
// Convertire una stringa in intero
$type_stringa = "24";
$transform_int = (int) $type_stringa;
var_dump($trasform_int);
// Output : 24 (come numero intero e non come stringa)
// Convertire un booleano in intero
$type_boolean = true;
$transform_int = (int) $type_boolean;
var_dump($type_boolean);
// Output : int(1) (come numero intero e non come booleano)
// Convertire numeri in un array
$type_int= 33;
$transform_array = (array) $type_int;
var_dump($type_int);
/* Output : un array con chiave 0 e l'intero 33
array(1) {
[0]=>
int(33)
}
*/
// Convertire un array in oggetto
$type_array = [20,'Donato',true];
$transform_obj = (object) $type_array;
var_dump($transform_obj );
/* Output :
object(stdClass)#1 (3) {
["0"]=>
int(20)
["1"]=>
string(6) "Donato"
["2"]=>
bool(true)
}
*/
// Convertire un intero in stringa
$type_int = 32;
$transform_string = (string) $type_int ;
var_dump($transform_string);
// Output : string(2) "32"