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.

CommentaDi' la tua

Il tuo indirizzo email non sarà mostrato pubblicamente. I campi obbligatori sono contrassegnati da *