Ce face list() / [$a, $b] =
Destructurarea pune elementele unui tablou direct în variabile: [$nume, $oras] = ["Ana", "Iași"];. Forma veche este list($nume, $oras) = ...; din PHP 7.1 se poate scrie mai scurt, cu paranteze drepte.
Poți sări peste elemente lăsând locul gol ([, $al_doilea] = ...), poți lua valorile după cheie (["id" => $id] = $rand) și poți destructura tablouri imbricate. Funcționează și direct în foreach.
Un truc util: schimbarea a două variabile între ele, fără variabilă temporară: [$a, $b] = [$b, $a];.
Exemple
Exemplul 1: Poziții și chei
<?php
[$zi, $luna, $an] = explode(".", "19.10.2026");
echo "An: $an, luna: $luna, zi: $zi\n";
[, $domeniu] = explode("@", "ana@exemplu.ro");
echo "Domeniu: $domeniu\n";
["nume" => $nume, "oras" => $oras] = ["id" => 7, "nume" => "Mihai", "oras" => "Cluj"];
echo "$nume din $oras";
Rezultat
An: 2026, luna: 10, zi: 19
Domeniu: exemplu.ro
Mihai din Cluj
Exemplul 2: Destructurare în foreach
<?php
$comenzi = [
["id" => 1024, "client" => "Ana", "total" => 259.9],
["id" => 1025, "client" => "Ioana", "total" => 80],
];
foreach ($comenzi as ["id" => $id, "total" => $total]) {
echo "#$id: $total lei\n";
}
Rezultat
#1024: 259.9 lei
#1025: 80 lei
Exemplul 3: Schimbare de valori și forma list()
<?php
$a = "primul";
$b = "al doilea";
[$a, $b] = [$b, $a];
echo "$a / $b\n";
list($latime, $inaltime) = [1920, 1080];
echo "{$latime}x{$inaltime}";
Rezultat
al doilea / primul
1920x1080
Greșeli frecvente
- Destructurezi mai multe variabile decât elemente are tabloul. Variabilele în plus primesc
nullși apare avertismentulUndefined array key. - Amesteci în aceeași destructurare poziții și chei:
[$a, "x" => $b] = .... Nu este permis; folosește ori doar poziții, ori doar chei.