Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

PHP 7.1: destrutturazione degli array

PHP 7.1: destrutturazione degli array
Link copiato negli appunti

Prima del rilascio di PHP 7.1 era possibile destrutturare un array passandolo innanzitutto come valore associato ad una chiamata della funzione list(), quindi attraverso un'assegnazione, per poi estrarre le informazioni relative alle variabili utilizzate come argomenti di quest'ultima. In sostanza era (ed è ancora) possibile utilizzare una sintassi come la seguente:

list($x, $y, $z) = [4, 8, 16];
var_dump($x, $y, $z);

L'esecuzione dell'espressione mostrata in esempio porta alla generazione del seguente output indipendentemente dalla release di PHP utilizzata:

int(4)
int(8)
int(16)

Il problema si presentava però nel momento in cui lo sviluppatore tentava di specificare delle chiavi per l'estrazione introducendo degli indici:

list($x, $y, $z) = ["x" => 4, "y" => 8, "z" => 16];
var_dump($x, $y, $z);

In questo caso infatti abbiamo un output come il seguente, sempre indipendentemente dalla versione di PHP utilizzata nel proprio ambiente di sviluppo:

NULL
NULL
NULL

PHP 7.1 risolve questa problematica tramite l'introduzione di una nuova modalità di destrutturazione basata su una doppia associazione delle chiavi, sia a carico delle variabili passate come parametri a list() che ai valori della variabile:

list("x" => $x, "y" => $y, "z" => $z) = ["x" => 4, "y" => 8, "z" => 16];
var_dump($x, $y, $z);
/*
int(4)
int(8)
int(16)
*/

Considerando che una soluzione del genere potrebbe essere utilizzata frequentemente, si è quindi deciso di introdurre una sintassi più breve che consente di omettere il passaggio delle coppie chiave/variabile alla funzione list():

["x" => $x, "y" => $y, "z" => $z] = ["x" => 4, "y" => 8, "z" => 16];
var_dump($x, $y, $z);
/*
int(4)
int(8)
int(16)
*/

Stesso discorso per quanto riguarda gli array multidimensionali:

[[$w, $x], [$y, $z]] = [[4, 8], [16, 32]];
var_dump($w, $x, $y, $z);
/*
int(4)
int(8)
int(16)
int(32)
*/

Anche in questo caso infatti non sarà necessario ricorrere esplicitamente alla funzione list() per la destrutturazione dell'array multidimensionale e di quelli che lo compongono.

Ti consigliamo anche