Menu

PHP implode(): объединить элементы массива в строку

implode(', ', $array) склеивает значения массива в одну строку с разделителем между ними. implode с ключами, ассоциативные массивы, сборка HTML-списков и разница между implode и join.

На этой странице есть исполняемые редакторы: меняйте, запускайте и сразу видите результат.

implode($separator, $array) склеивает значения массива в одну строку, ставя $separator между каждой парой: implode(', ', ['red', 'green', 'blue']) возвращает "red, green, blue".

Разделитель ставится только между элементами, никогда перед первым или после последнего. Это обратная операция для explode(), которая разбивает строку на массив.

Синтаксис

implode(string $separator, array $array): string
implode(array $array): string   // separator defaults to ""

Разделитель идёт первым. Старый код иногда передавал массив первым, implode($array, ', '). Такой порядок объявили устаревшим в PHP 7.4 и удалили в PHP 8.0, где он выбрасывает TypeError: implode(): Argument #2 ($array) must be of type ?array, string given.

implode и join

join() это псевдоним implode(). Они принимают одинаковые аргументы и возвращают одинаковую строку, так что выберите одну и придерживайтесь её.

Что происходит с числами, логическими значениями и null

Каждое значение сначала приводится к строке. Числа выводятся так, как вы ожидаете, true становится "1", а false и null становятся пустыми строками, из-за чего два разделителя оказываются подряд.

implode для ассоциативного массива

implode() игнорирует ключи и склеивает только значения. Чтобы получить пары key=value, соберите каждую часть через array_map() по ключам и значениям, а потом склейте. http_build_query() делает то же для строки запроса URL и ещё кодирует пробелы и спецсимволы.

По той же схеме склеиваются только ключи: implode(', ', array_keys($user)). Подробнее о ключах и значениях на странице про ассоциативные массивы.

Склейка через перенос строки или HTML-список

Разделителем может быть любая строка. "\n" (в двойных кавычках) ставит каждое значение на отдельную строку, что удобно для текстовых файлов и вывода в командной строке. С HTML-тегами в качестве разделителя implode() собирает список одной строкой. Запустите следующий блок, и вкладка Page покажет готовый список.

Экранирование каждого значения через htmlspecialchars() перед склейкой не даёт значению вроде <b> превратиться в разметку.

Склейка с "и" перед последним элементом

Человекочитаемому списку обычно нужно "и" перед последним элементом. Снимите его с конца, склейте остальное и добавьте обратно:

Частая ошибка: вложенные массивы

implode() работает с одним уровнем. Элемент, который сам является массивом, превращается в слово Array, а PHP печатает предупреждение:

<?php
echo implode(', ', ['red', ['orange', 'yellow']]);
Warning: Array to string conversion in /home/index.php on line 2
red, Array

Сначала сделайте вложенные массивы плоскими или склейте каждый по отдельности:

Часто задаваемые вопросы

Что делает implode() в PHP?

Склеивает значения массива в одну строку, ставя между ними разделитель: implode(', ', ['a', 'b', 'c']) возвращает "a, b, c". Это противоположность explode().

Чем implode() отличается от join()?

Ничем. join() это псевдоним implode(): те же аргументы, тот же результат. В большей части кода встречается имя implode().

Как склеить ассоциативный массив вместе с ключами?

implode() использует только значения. Чтобы включить ключи, сначала соберите части: implode(', ', array_map(fn($k, $v) => "$k=$v", array_keys($a), $a)). Для строки запроса URL http_build_query($a) делает это одним вызовом.

Почему implode() выдаёт TypeError в PHP 8?

Потому что аргументы стоят в старом порядке. implode($array, ', ') объявили устаревшим в PHP 7.4 и удалили в PHP 8.0. Пишите разделитель первым: implode(', ', $array).

Как превратить массив в строку через запятую в PHP?

implode(',', $array). Используйте разделитель ', ', если после каждой запятой нужен пробел. Для CSV-файла используйте fputcsv(), она ещё и берёт в кавычки значения с запятыми.

Иллюстрация языков программирования Coddy

Учитесь программировать с Coddy

НАЧАТЬ