Funktion implode() - Zeichenkette aus Werten eines Arrays bilden

Ein Array ist eine Variable, das mehrere Werte enthalten kann. Mit der Funktion explode() kann man eine Zeichenkette an den Stellen trennen, an denen ein vordefiniertes Trennzeichen vorkommt. Der Rückgabewert ist ein Array, der die einzelnen Werte enthält. Es kann vorkommen, dass man eine umgekehrte Funktion benötigt, sodass aus den Werten eines Arrays eine einzige Zeichenkette mit oder ohne Trennzeichen gebildet wird. Für solche Vorgänge kann man in PHP die Funktion implode() nutzen. Das kann z.B. genutzt werden, um eine mit Komma getrennte Liste zu erstellen, um daraus eine CSV-Datei zu erstellen.

Innerhalb der runden Klammern kann man zwei Parameter angeben, wobei der erste optional ist. Mit dem ersten Parameter gibt man das Trennzeichen an, das zwischen den Werten eingefügt wird. Das kann z.B. ein Komma, Bindestrich, Leerzeichen etc. sein. Als zweiten Parameter gibt man das Array an, dessen Werte zu einem String zusammengefügt werden sollen. Nachfolgend ist ein Beispielcode, bei dem die Werte kommagetrennt zusammengefügt werden.

<?php

$str = array('Wert1', 'Wert2', 'Wert3', 'Wert4');

// Ausgabe Wert1,Wert2,Wert3,Wert4
echo implode(',', $str);

?>

Dabei spielt es keine Rolle, ob es sich um ein indiziertes oder assoziatives Array handelt. Nachfolgend ist ein Beispiel, bei dem die Werte eines assoziativen Arrays kommagetrennt zusammengefügt werden.

<?php

$str = array
(
  'mo' => 'Mo', 
  'di' => 'Di', 
  'mi' => 'Mi', 
  'do' => 'Do', 
  'fr' => 'Fr'
);

// Ausgabe Mo,Di,Mi,Do,Fr
echo implode(',', $str);

?>

Zeichenketten aus mehrdimensionalen Arrays bilden

Man kann die Funktion implode() auch auf mehrdimensionale Arrays anwenden. Beim folgenden Beispiel wird der Inhalt von Index 0 und 1 eines mehrdimensionalen Arrays zu einer mit Komma getrennten Zeichenkette verbunden und ausgegeben.

<?php

$str = array
(

// Index 0
  array
    (
    'Montag',
    'Dienstag',
    'Mittwoch',
    'Donnerstag',
    'Freitag'
    ),

// Index 1
  array
    (
    'morgen',
    'vormittag',
    'mittag',
    'nachmittag',
    'abend',
    'nacht',
    )
);

// Index 0 und 1 ausgeben

// Ausgabe Montag,Dienstag,Mittwoch,Donnerstag,Freitag
echo implode(',', $str[0]) . '<br>';

// Ausgabe morgen,vormittag,mittag,nachmittag,abend,nacht
echo implode(',', $str[1]) . '<br>';

?>

Die Variante hat den Nachteil, dass man den Index manuell angeben muss. Es ist auch möglich, den Index automatisch auszulesen und mit implode() eine Zeichenkette zu bilden. Hierfür kann man die Funktion in eine foreach-Schleife einfügen.

<?php

$str = array
(

// Index 0
  array
    (
    'Montag',
    'Dienstag',
    'Mittwoch',
    'Donnerstag',
    'Freitag'
    ),

// Index 1
  array
    (
    'morgen',
    'vormittag',
    'mittag',
    'nachmittag',
    'abend',
    'nacht',
    )
);

// Index 0 und 1 ausgeben

// Ausgabe Montag,Dienstag,Mittwoch,Donnerstag,Freitag
// Ausgabe morgen,vormittag,mittag,nachmittag,abend,nacht
foreach ($str as $index) {

  echo implode(',', $index) . '<br>';

}

?>

Als Trennzeichen kommen nicht nur Kommas in Frage. Häufig werden Leerzeichen, Pipes oder auch Bindestriche verwendet.