implode($separator, $array) verbindet die Werte eines Arrays zu einem String, mit $separator zwischen je zwei Werten: implode(', ', ['red', 'green', 'blue']) liefert "red, green, blue".
Das Trennzeichen kommt nur zwischen Elemente, nie vor das erste oder hinter das letzte. Es ist die Umkehrung von explode(), das einen String in ein Array teilt.
Syntax
implode(string $separator, array $array): string
implode(array $array): string // separator defaults to ""
Das Trennzeichen kommt zuerst. Älterer Code hat manchmal das Array zuerst übergeben, implode($array, ', '). Diese Reihenfolge wurde in PHP 7.4 als veraltet markiert und in PHP 8.0 entfernt, wo sie TypeError: implode(): Argument #2 ($array) must be of type ?array, string given wirft.
implode vs join
join() ist ein Alias von implode(). Sie nehmen dieselben Argumente und liefern denselben String, also wähl eines und bleib dabei.
Was mit Zahlen, Booleans und null passiert
Jeder Wert wird zuerst in einen String umgewandelt. Zahlen erscheinen wie erwartet, true wird zu "1", und false und null werden zu leeren Strings, was zwei Trennzeichen hintereinander hinterlässt.
Ein assoziatives Array verbinden
implode() ignoriert Schlüssel und verbindet nur die Werte. Um Paare key=value zu bekommen, baust du jedes Teil mit array_map() über Schlüssel und Werte und verbindest dann. http_build_query() macht dasselbe für einen URL-Query-String und kodiert außerdem Leerzeichen und Sonderzeichen.
Dasselbe Muster verbindet nur die Schlüssel: implode(', ', array_keys($user)). Mehr zu Schlüsseln und Werten steht auf der Seite zu assoziativen Arrays.
Mit Zeilenumbruch verbinden oder eine HTML-Liste bauen
Das Trennzeichen kann ein beliebiger String sein. "\n" (doppelte Anführungszeichen) setzt jeden Wert in eine eigene Zeile, praktisch für Textdateien und Kommandozeilenausgabe. Mit HTML-Tags als Trennzeichen baut implode() eine Liste in einer Zeile. Führe den nächsten Block aus, und der Tab Page zeigt die gerenderte Liste.
Jeden Wert vor dem Verbinden mit htmlspecialchars() zu escapen, verhindert, dass ein Wert wie <b> zu Markup wird.
Mit „and“ vor dem letzten Eintrag verbinden
Eine gut lesbare Liste braucht meist ein „and“ vor dem letzten Element. Nimm es mit pop heraus, verbinde den Rest und häng es wieder an:
Typischer Fehler: verschachtelte Arrays
implode() arbeitet auf einer Ebene. Ein Element, das selbst ein Array ist, wird zum Wort Array, und PHP gibt eine Warnung aus:
<?php
echo implode(', ', ['red', ['orange', 'yellow']]);
Warning: Array to string conversion in /home/index.php on line 2
red, Array
Mach die inneren Arrays vorher flach oder verbinde jedes einzeln:
Häufig gestellte Fragen
Was macht implode() in PHP?
Es verbindet die Werte eines Arrays zu einem String und setzt das Trennzeichen dazwischen: implode(', ', ['a', 'b', 'c']) liefert "a, b, c". Es ist das Gegenteil von explode().
Was ist der Unterschied zwischen implode() und join()?
Es gibt keinen. join() ist ein Alias von implode(): gleiche Argumente, gleiches Ergebnis. implode() ist der Name, den du in den meisten Codebasen siehst.
Wie verbinde ich ein assoziatives Array mit seinen Schlüsseln?
implode() verwendet nur die Werte. Um Schlüssel einzubeziehen, baust du die Teile vorher: implode(', ', array_map(fn($k, $v) => "$k=$v", array_keys($a), $a)). Für einen URL-Query-String erledigt http_build_query($a) das in einem Aufruf.
Warum gibt implode() in PHP 8 einen TypeError?
Weil die Argumente in der alten Reihenfolge stehen. implode($array, ', ') wurde in PHP 7.4 als veraltet markiert und in PHP 8.0 entfernt. Schreib das Trennzeichen zuerst: implode(', ', $array).
Wie wandle ich in PHP ein Array in einen kommagetrennten String um?
Mit implode(',', $array). Verwende ', ' als Trennzeichen, wenn du nach jedem Komma ein Leerzeichen willst. Für eine CSV-Datei verwendest du fputcsv(), das außerdem Werte mit Kommas in Anführungszeichen setzt.