Die Destrukturierung von Arrays in PHP ermöglicht es dir, Werte direkt aus einem Array in separate Variablen zu extrahieren. Dies geschieht mithilfe von Sprachkonstrukten wie list
oder der Kurzschreibweise []
. Diese Konstrukte erinnern in ihrer Funktion an das array()
-Konstrukt, indem sie Werte des Arrays auf Variablen verteilen, die innerhalb der list
– oder []
-Klammer definiert sind.
Ein grundlegendes Beispiel zeigt, wie du ein Array auf diese Weise destrukturieren kannst:
$array = ["Apfel", "Banane", "Kirsche"];
// Verwendung der list-Syntax:
list($frucht1, $frucht2, $frucht3) = $array;
// Oder die Kurzschreibweise:
[$frucht1, $frucht2, $frucht3] = $array;
// $frucht1 = "Apfel"
// $frucht2 = "Banane"
// $frucht3 = "Kirsche"
Ob du die traditionelle list
-Syntax oder die neuere []
-Syntax bevorzugst, hängt von deinem persönlichen Stil ab, beide Methoden führen zum gleichen Ergebnis.
Ein praktischer Vorteil des Destrukturierens ist die Möglichkeit, bestimmte Elemente eines Arrays zu überspringen. Nehmen wir an, du interessierst dich nur für das zweite Element eines Arrays:
[, $frucht2] = $array;
// $frucht2 = "Banane"
Bei Verwendung von list
beginnt die Zählung immer beim Index 0. Seit PHP 7.1 hast du die Möglichkeit, Arrays mit nicht-numerischen Schlüsseln zu destrukturieren. Dies erweitert die Nutzbarkeit erheblich:
$array = [
'a' => "Apfel",
'b' => "Banane",
'c' => "Kirsche",
];
['b' => $banane, 'a' => $apfel] = $array;
Solche Techniken sind besonders nützlich, wenn du zum Beispiel mit Funktionen wie parse_str
oder get_headers
arbeitest, die Arrays mit Named Keys zurückgeben:
parse_str("name=John&age=23", $result);
['name' => $name, 'age' => $age] = $result;
Es ist wichtig darauf zu achten, dass das Destrukturieren mit einem nicht existierenden Schlüssel zu einer PHP-Benachrichtigung führt:
['name' => $name, 'location' => $location] = $result;
// PHP Notice: Undefined index: location
Hierbei wird $location
automatisch auf null
gesetzt.
Auch innerhalb von Schleifen kann das Destrukturierungsprinzip angewandt werden, um den Code lesbarer und effizienter zu gestalten:
$array = [
[
'name' => 'John',
'age' => 23
],
[
'name' => 'Jane',
'age' => 25
],
];
foreach ($array as ['age' => $age, 'name' => $name]) {
// ...
}