implode($separator, $array) łączy wartości tablicy w jeden string, wstawiając $separator między każdą parę: implode(', ', ['red', 'green', 'blue']) zwraca "red, green, blue".
Separator trafia tylko między elementy, nigdy przed pierwszy ani po ostatnim. To odwrotność explode(), które dzieli string na tablicę.
Składnia
implode(string $separator, array $array): string
implode(array $array): string // separator defaults to ""
Separator jest pierwszy. Starszy kod czasem przekazywał najpierw tablicę, implode($array, ', '). Ta kolejność została oznaczona jako przestarzała w PHP 7.4 i usunięta w PHP 8.0, gdzie rzuca TypeError: implode(): Argument #2 ($array) must be of type ?array, string given.
implode vs join
join() to alias implode(). Przyjmują te same argumenty i zwracają ten sam string, więc wybierz jedną nazwę i trzymaj się jej.
Co dzieje się z liczbami, wartościami logicznymi i null
Każda wartość jest najpierw zamieniana na string. Liczby wypisują się tak, jak się spodziewasz, true staje się "1", a false i null stają się pustymi stringami, co zostawia dwa separatory pod rząd.
implode tablicy asocjacyjnej
implode() ignoruje klucze i łączy tylko wartości. Aby dostać pary key=value, zbuduj każdy kawałek przez array_map() na kluczach i wartościach, a potem połącz. http_build_query() robi to samo dla query stringa w adresie URL i dodatkowo koduje spacje oraz znaki specjalne.
Ten sam wzorzec łączy same klucze: implode(', ', array_keys($user)). Więcej o kluczach i wartościach znajdziesz na stronie o tablicach asocjacyjnych.
Łączenie znakiem nowej linii lub budowanie listy HTML
Separatorem może być dowolny string. "\n" (podwójne cudzysłowy) umieszcza każdą wartość w osobnej linii, co przydaje się w plikach tekstowych i w wierszu poleceń. Ze znacznikami HTML jako separatorem implode() buduje listę w jednej linii. Uruchom następny blok, a zakładka Page pokaże wyrenderowaną listę.
Escapowanie każdej wartości przez htmlspecialchars() przed połączeniem sprawia, że wartość taka jak <b> nie staje się znacznikiem.
Łączenie z „and” przed ostatnim elementem
Czytelna dla człowieka lista zwykle potrzebuje spójnika przed ostatnim elementem. Zdejmij go, połącz resztę, a potem dodaj z powrotem:
Częsty błąd: zagnieżdżone tablice
implode() działa na jednym poziomie. Element, który sam jest tablicą, zamienia się w słowo Array, a PHP wypisuje ostrzeżenie:
<?php
echo implode(', ', ['red', ['orange', 'yellow']]);
Warning: Array to string conversion in /home/index.php on line 2
red, Array
Najpierw spłaszcz wewnętrzne tablice albo połącz każdą osobno:
Najczęściej zadawane pytania
Co robi implode() w PHP?
Łączy wartości tablicy w jeden string, wstawiając między nie separator: implode(', ', ['a', 'b', 'c']) zwraca "a, b, c". To odwrotność explode().
Czym różni się implode() od join()?
Niczym. join() to alias implode(): te same argumenty, ten sam wynik. W większości kodu zobaczysz nazwę implode().
Jak połączyć tablicę asocjacyjną razem z kluczami?
implode() używa tylko wartości. Aby uwzględnić klucze, najpierw zbuduj kawałki: implode(', ', array_map(fn($k, $v) => "$k=$v", array_keys($a), $a)). Dla query stringa w adresie URL http_build_query($a) robi to w jednym wywołaniu.
Dlaczego implode() rzuca TypeError w PHP 8?
Bo argumenty są w starej kolejności. implode($array, ', ') zostało oznaczone jako przestarzałe w PHP 7.4 i usunięte w PHP 8.0. Pisz najpierw separator: implode(', ', $array).
Jak zamienić tablicę na string rozdzielony przecinkami w PHP?
implode(',', $array). Użyj ', ' jako separatora, jeśli chcesz spację po każdym przecinku. Do pliku CSV użyj fputcsv(), które dodatkowo otacza cudzysłowami wartości zawierające przecinki.