Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
 
 
 

Der Spread Operator in PHP: Arrays entpacken und zusammenführen

Sie befinden sich: Home > Php Tutorial > Der Spread Operator in PHP:...

Der Spread Operator in PHP: Arrays entpacken und zusammenfuehren


Eintrag am:  06.05.2026
Hits / Besucher:  13
Sprache:  Deutsch
Kategorie:  Fortgeschrittene Tut...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Die drei Punkte ... gehören zu den vielseitigsten Werkzeugen in PHP. Der sogenannte Spread Operator (auch als Splat Operator bezeichnet) entpackt Arrays in einzelne Elemente, übergibt Funktionsargumente dynamisch und führt mehrere Arrays in einem einzigen Ausdruck zusammen. Seit PHP 5.6 steht Argument Unpacking zur Verfügung, seit PHP 7.4 funktioniert der Operator auch in Array Ausdrücken und seit PHP 8.1 werden sogar assoziative Arrays mit String Keys unterstützt. Dieses Tutorial erklärt alle Einsatzbereiche mit praxisnahen Codebeispielen.

Illustration zum Tutorial: Der Spread Operator in PHP: Arrays entpacken und zusammenführen

Bevor die einzelnen Einsatzbereiche im Detail behandelt werden, klärt der folgende Abschnitt, was der Spread Operator genau ist und in welchen Kontexten PHP ihn erkennt.

Was ist der Spread Operator?

Der Spread Operator besteht aus drei aufeinanderfolgenden Punkten (...) und wird direkt vor einem Array oder einer Variable platziert. Er entpackt die enthaltenen Elemente, sodass sie einzeln an der jeweiligen Stelle eingefügt werden. PHP verwendet denselben Operator in drei unterschiedlichen Kontexten: beim Aufruf von Funktionen (Argument Unpacking), bei der Definition variadischer Funktionen und innerhalb von Array Ausdrücken.

Das folgende Diagramm zeigt die drei Einsatzbereiche und die jeweilige PHP Version, seit der sie verfügbar sind.

flowchart TD
    A["Spread Operator: drei Punkte"] --> B["Argument Unpacking"]
    A --> C["Array Entpackung"]
    A --> D["Variadische Funktion"]
    B --> E["Funktionsaufruf seit PHP 5.6"]
    C --> F["Array-Ausdruck seit PHP 7.4"]
    C --> G["String Keys seit PHP 8.1"]
    D --> H["Beliebig viele Argumente"]

Je nach Kontext entpackt der Operator ein Array in einzelne Argumente oder sammelt umgekehrt mehrere Argumente zu einem Array. Diese Doppelrolle macht ihn besonders flexibel.

Argument Unpacking in Funktionsaufrufen

Seit PHP 5.6 kann ein Array mit dem Spread Operator direkt als Argumentliste an eine Funktion übergeben werden. Dabei wird jedes Element des Arrays einem Parameter der Funktion zugeordnet.

<?php

function addiere(int $a, int $b, int $c): int
{
return $a + $b + $c;
}

$zahlen = [10, 20, 30];
echo addiere(...$zahlen); /* 60 */

Der Aufruf addiere(...$zahlen) entpackt das Array, sodass $a den Wert 10, $b den Wert 20 und $c den Wert 30 erhält. Ohne den Spread Operator müsste jedes Element einzeln mit seinem Index übergeben werden. Das Argument Unpacking funktioniert auch mit assoziativen Arrays, wenn die Schlüssel den Parameternamen entsprechen.

<?php

function begruessung(string $vorname, string $nachname): string
{
return 'Hallo ' . $vorname . ' ' . $nachname;
}

$person = ['nachname' => 'Meier', 'vorname' => 'Anna'];
echo begruessung(...$person); /* Hallo Anna Meier */

PHP ordnet die Werte anhand der Schlüsselnamen den passenden Parametern zu. Die Reihenfolge im Array spielt dabei keine Rolle, entscheidend ist allein die Übereinstimmung der Schlüssel mit den Parameternamen.

Variadische Funktionen

In der Funktionsdefinition dient der Spread Operator dazu, eine beliebige Anzahl von Argumenten entgegenzunehmen. Solche Funktionen werden als variadisch bezeichnet.

<?php

function summe(int ...$zahlen): int
{
return array_sum($zahlen);
}

echo summe(1, 2, 3, 4, 5); /* 15 */
echo summe(10, 20); /* 30 */
echo summe(42); /* 42 */

Der Parameter ...$zahlen sammelt alle übergebenen Argumente in einem Array. Innerhalb der Funktion steht $zahlen dann als gewöhnliches Array zur Verfügung. Der variadische Parameter muss immer der letzte in der Parameterliste sein. Vor ihm können beliebig viele reguläre Parameter stehen.

Arrays entpacken und zusammenführen

Seit PHP 7.4 lässt sich der Spread Operator auch direkt innerhalb von Array Ausdrücken verwenden. Damit können mehrere Arrays in einem einzigen Schritt zusammengeführt werden.

<?php

$erste = [1, 2, 3];
$zweite = [4, 5, 6];

$zusammen = [...$erste, ...$zweite];
print_r($zusammen);
/*
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)
*/

/* Einzelne Elemente dazwischen einfügen */
$erweitert = [...$erste, 99, ...$zweite];
print_r($erweitert);
/*
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 99
[4] => 4
[5] => 5
[6] => 6
)
*/

Der Spread Operator kann beliebig oft im selben Ausdruck vorkommen. Zwischen den entpackten Arrays lassen sich auch einzelne Werte einfügen. Wichtig ist dabei, dass nur Arrays und Objekte vom Typ Traversable entpackt werden können. Der Operator erstellt stets eine flache Kopie, verschachtelte Arrays oder Objekte werden also als Referenz übernommen und nicht tief kopiert.

String Keys seit PHP 8.1

Vor PHP 8.1 konnte der Spread Operator in Array Ausdrücken ausschließlich mit numerischen Keys arbeiten. Der Versuch, ein assoziatives Array mit String Keys zu entpacken, führte zu einem Fehler. Seit PHP 8.1 ist diese Einschränkung aufgehoben.

<?php

$standard = ['farbe' => 'blau', 'groesse' => 'M'];
$eigene = ['farbe' => 'rot'];

$config = [...$standard, ...$eigene];
print_r($config);
/*
Array
(
[farbe] => rot
[groesse] => M
)
*/

Bei doppelten String Keys überschreibt der spätere Wert den früheren. In diesem Beispiel wird farbe zuerst auf blau gesetzt und anschließend durch rot aus dem zweiten Array ersetzt. Dieses Verhalten entspricht dem von array_merge() und eignet sich hervorragend für Konfigurationsszenarien, bei denen Standardwerte durch benutzerdefinierte Einstellungen überschrieben werden sollen.

Spread Operator vs. array_merge()

Der Spread Operator und die Funktion array_merge() erzeugen bei der Zusammenführung von Arrays in den meisten Fällen identische Ergebnisse. Dennoch gibt es Unterschiede, die bei der Wahl des passenden Ansatzes relevant sind.

<?php

$a = [1, 2];
$b = [3, 4];

/* Beide Varianten erzeugen das gleiche Ergebnis */
$mitSpread = [...$a, ...$b];
$mitMerge = array_merge($a, $b);

print_r($mitSpread); /* [1, 2, 3, 4] */
print_r($mitMerge); /* [1, 2, 3, 4] */

/* Unterschied: Der Spread Operator erlaubt Elemente dazwischen */
$gemischt = [...$a, 'extra', ...$b];
print_r($gemischt); /* [1, 2, 'extra', 3, 4] */

Der Spread Operator bietet eine kompaktere und oft besser lesbare Syntax. Einzelne Werte lassen sich frei zwischen den entpackten Arrays platzieren, was mit array_merge() nicht möglich ist. Außerdem wird der Spread Operator zur Kompilierzeit aufgelöst, während array_merge() ein Funktionsaufruf zur Laufzeit ist. Bei dynamisch erzeugten Arrays oder einer variablen Anzahl von Arrays bleibt array_merge() allerdings die bessere Wahl, da der Spread Operator eine feste Anzahl von Operanden erwartet.

Fazit

Der Spread Operator (...) in PHP deckt drei zentrale Anwendungsbereiche ab: Argument Unpacking beim Funktionsaufruf seit PHP 5.6, variadische Funktionsdefinitionen und die Entpackung in Array Ausdrücken seit PHP 7.4. Mit PHP 8.1 wurde die Unterstützung für assoziative Arrays mit String Keys ergänzt, wodurch der Operator auch für Konfigurationsszenarien einsetzbar ist. Im Vergleich zu array_merge() bietet der Spread Operator eine kompaktere Schreibweise und erlaubt das Einfügen einzelner Werte zwischen entpackten Arrays. Der Operator erstellt dabei immer eine flache Kopie und kann ausschließlich Arrays sowie Traversable Objekte verarbeiten.

 

Tags:

 

Kommentare (0)

Noch keine Kommentare. Sei der Erste!

Melde dich an, um einen Kommentar zu schreiben.
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.