Menu

implode() w PHP: łączenie elementów tablicy w string

implode(', ', $array) łączy wartości tablicy w jeden string z separatorem między nimi. Poznaj implode z kluczami, tablice asocjacyjne, budowanie list HTML i różnicę między implode a join.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

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.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ