W3docs

implode()

Статья о PHP-функции implode(), которая объединяет элементы массива в строку. Функция полезна при работе с массивами и строками в PHP.

PHP-функция implode() объединяет элементы массива в единую строку, помещая разделитель (клей) между каждым элементом. Именно к ней обращаются, когда есть список значений, а нужна одна строка — список через запятую, путь URL, строка CSV или конструкция SQL IN (...). Это прямая противоположность explode(), которая разбивает строку обратно в массив.

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

Синтаксис

implode(string $separator, array $array): string
implode(array $array): string   // legacy: separator defaults to ""
ПараметрОписание
$separatorСтрока, помещаемая между каждым элементом. Часто называется клеем.
$arrayМассив значений для объединения.

Возвращаемое значение: единая строка, содержащая все элементы массива, объединённые через $separator, в их исходном порядке.

Функция никогда не изменяет исходный массив — она возвращает новую строку.

Базовый пример

php— editable, runs on the server

Каждый элемент соединяется одним пробелом, в результате получается:

Hello World !

Использование другого разделителя

Разделитель может быть любой строкой, а не только одним символом. Здесь элементы соединяются дефисом:

php— editable, runs on the server

Вывод:

Hello-World-!

Распространённый реальный пример — формирование списка через запятую для отображения или запроса:

<?php
$ids = [4, 7, 12, 19];
echo 'WHERE id IN (' . implode(', ', $ids) . ')';
// WHERE id IN (4, 7, 12, 19)
?>

Объединение ассоциативного массива

implode() полностью игнорирует ключи и объединяет только значения в порядке вставки:

<?php
$user = ['id' => 1, 'name' => 'Sam', 'role' => 'admin'];
echo implode(' | ', $user);
?>

Вывод:

1 | Sam | admin

Если нужны и ключи (например, id=1&name=Sam), используйте http_build_query() или array_map() по ключам — implode() сам по себе не может их видеть.

Граничные случаи и подводные камни

Пустой массив. Объединение пустого массива всегда возвращает пустую строку, независимо от разделителя:

<?php
echo '[' . implode(', ', []) . ']';   // []
?>

Нестроковые значения приводятся к строкам. Числа, булевы значения и null преобразуются по стандартным правилам PHP для строк — что может удивить: true становится "1", тогда как false и null становятся "" (пустой строкой):

<?php
echo implode(', ', [1, 2.5, true, null, 'x']);
// 1, 2.5, 1, , x
?>

Если нужно отфильтровать null/false, пропустите массив через array_filter() перед объединением.

Разделитель является необязательным. Вызов implode($array) без разделителя конкатенирует значения напрямую. Для удобочитаемости рекомендуется передавать разделитель первым:

<?php
echo implode(['a', 'b', 'c']);   // abc
?>

До PHP 8.0 аргументы можно было передавать в любом порядке (implode($array, $glue)). Это историческое поведение было удалено в PHP 8.0 — всегда передавайте разделитель первым.

implode() и explode()

implode() и explode() — зеркальные операции: одна строит строку из массива, другая воссоздаёт массив из строки.

<?php
$csv  = implode(',', ['red', 'green', 'blue']); // "red,green,blue"
$back = explode(',', $csv);                      // ['red', 'green', 'blue']
?>

join() — просто псевдоним implode(); эти функции взаимозаменяемы. Подробнее см. join() и explode().

Практика

Практика
Какова цель функции implode() в PHP?
Какова цель функции implode() в PHP?
Was this page helpful?