W3docs

implode()

Unser Artikel beschreibt die PHP-Funktion implode(), die Array-Elemente mit einem Trennzeichen zu einem String verbindet.

PHP's implode() verbindet die Elemente eines Arrays zu einem einzigen String und platziert dabei ein Trennzeichen (die Klebezeichenkette) zwischen den einzelnen Elementen. Diese Funktion wird immer dann eingesetzt, wenn man eine Liste von Werten hat und einen einzigen String benötigt — eine kommagetrennte Liste, einen URL-Pfad, eine CSV-Zeile oder eine SQL-Klausel IN (...). Sie ist das genaue Gegenteil von explode(), das einen String wieder in ein Array aufteilt.

Diese Seite behandelt die Syntax, den Rückgabewert sowie häufige Fehlerquellen: den optionalen Trenner, assoziative Arrays, leere Arrays und die Konvertierung von Nicht-String-Werten.

Syntax

implode(string $separator, array $array): string
implode(array $array): string   // legacy: separator defaults to ""
ParameterBeschreibung
$separatorDer String, der zwischen die einzelnen Elemente gesetzt wird. Wird häufig als Kleber bezeichnet.
$arrayDas Array mit den zu verbindenden Werten.

Rückgabewert: Ein einzelner String, der alle Array-Elemente in ihrer ursprünglichen Reihenfolge durch $separator getrennt enthält.

Die Funktion verändert das ursprüngliche Array nicht — sie gibt einen neuen String zurück.

Ein einfaches Beispiel

php— editable, runs on the server

Jedes Element wird mit einem einzelnen Leerzeichen verbunden, was folgendes Ergebnis liefert:

Hello World !

Einen anderen Trenner verwenden

Der Kleber kann ein beliebiger String sein, nicht nur ein einzelnes Zeichen. Hier verbinden wir die Elemente mit einem Bindestrich:

php— editable, runs on the server

Ausgabe:

Hello-World-!

Ein häufiger Praxisfall ist das Erstellen einer kommaseparierten Liste für die Anzeige oder eine Datenbankabfrage:

<?php
$ids = [4, 7, 12, 19];
echo 'WHERE id IN (' . implode(', ', $ids) . ')';
// WHERE id IN (4, 7, 12, 19)
?>

Ein assoziatives Array verbinden

implode() ignoriert die Schlüssel vollständig und verbindet nur die Werte in der Reihenfolge ihrer Einfügung:

<?php
$user = ['id' => 1, 'name' => 'Sam', 'role' => 'admin'];
echo implode(' | ', $user);
?>

Ausgabe:

1 | Sam | admin

Wenn Sie die Schlüssel ebenfalls benötigen (z. B. id=1&name=Sam), verwenden Sie stattdessen http_build_query() oder array_map() über die Schlüssel — implode() allein kann diese nicht berücksichtigen.

Sonderfälle und häufige Fehler

Leeres Array. Das Verbinden eines leeren Arrays gibt immer einen leeren String zurück, unabhängig vom Trennzeichen:

<?php
echo '[' . implode(', ', []) . ']';   // []
?>

Nicht-String-Werte werden zu Strings konvertiert. Zahlen, boolesche Werte und null werden nach den normalen PHP-String-Regeln konvertiert — was überraschend sein kann: true wird zu "1", während false und null zu "" (einem leeren String) werden:

<?php
echo implode(', ', [1, 2.5, true, null, 'x']);
// 1, 2.5, 1, , x
?>

Wenn Sie null/false herausfiltern möchten, führen Sie das Array vor dem Verbinden durch array_filter().

Der Trenner ist optional. Der Aufruf von implode($array) ohne Kleber verbindet die Werte direkt. Es wird empfohlen, den Trenner aus Gründen der Lesbarkeit stets als ersten Parameter anzugeben:

<?php
echo implode(['a', 'b', 'c']);   // abc
?>

Vor PHP 8.0 konnten die beiden Argumente in beliebiger Reihenfolge angegeben werden (implode($array, $glue)). Dieses historische Verhalten wurde in PHP 8.0 entfernt — übergeben Sie den Trenner stets als erstes Argument.

implode() vs explode()

implode() und explode() sind gespiegelte Operationen: Die eine Funktion erstellt einen String aus einem Array, die andere baut das Array aus dem String zurück.

<?php
$csv  = implode(',', ['red', 'green', 'blue']); // "red,green,blue"
$back = explode(',', $csv);                      // ['red', 'green', 'blue']
?>

join() ist lediglich ein Alias von implode() — die beiden sind austauschbar. Weitere Informationen finden Sie unter join() und explode().

Übung

Übung
Was ist der Zweck der Funktion implode() in PHP?
Was ist der Zweck der Funktion implode() in PHP?
Was this page helpful?