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, в их исходном порядке.
Функция никогда не изменяет исходный массив — она возвращает новую строку.
Базовый пример
Каждый элемент соединяется одним пробелом, в результате получается:
Hello World !Использование другого разделителя
Разделитель может быть любой строкой, а не только одним символом. Здесь элементы соединяются дефисом:
Вывод:
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().