1

Implode: примеры (PHP)

Функция implode в PHP: подробный разбор с примерами
Раздел: Работа со строками
implode(string $separator, array $array): string

Основные сведения о функции implode

Функция implode() в PHP преобразует элементы массива в строку, соединяя их с помощью указанного разделителя. Эта операция часто используется для формирования строк из данных, хранящихся в массивах, например, при создании SQL-запросов, путей к файлам или текстового представления данных.

Аргументы функции

Функция поддерживает два варианта синтаксиса:

implode(string $separator, array $array): string
implode(array $array): string // $separator равен пустой строке
  • $separator — строка, которая вставляется между элементами массива. Если передается пустая строка, элементы объединяются без разделителей.
  • $array — массив, элементы которого объединяются. Если элементы не являются строками, они преобразуются в строки.

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

Базовые примеры использования

Стандартное использование с разделителем
$array = ['яблоко', 'банан', 'апельсин'];
echo implode(', ', $array);
яблоко, банан, апельсин
Объединение без разделителя
$numbers = [1, 2, 3];
echo implode($numbers);
123
Использование с пустым разделителем
$chars = ['H', 'e', 'l', 'l', 'o'];
echo implode('', $chars);
Hello
Массив с разными типами данных
$data = [42, 'текст', true, null];
echo implode(' - ', $data);
42 - текст - 1 -
Обратный порядок аргументов (устаревший)
$array = ['PHP', 'JavaScript', 'Python'];
echo implode($array, ' | ');
PHP | JavaScript | Python

Альтернативные функции в PHP

Функция join() является псевдонимом implode() и работает идентично. Выбор между ними зависит только от предпочтений разработчика.

vsprintf()

Функция vsprintf() форматирует строку с использованием массива аргументов. Полезно, когда требуется сложное форматирование с использованием шаблона.

$template = '%s и %s';
$array = ['кофе', 'чай'];
echo vsprintf($template, $array);
кофе и чай
array_reduce()

Функция array_reduce() позволяет реализовать собственную логику объединения, например, с условиями для каждого элемента.

$array = [1, 2, 3, 4];
$result = array_reduce($array, function($carry, $item) {
    return $carry . '-' . $item;
});
echo ltrim($result, '-');
1-2-3-4

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

Распространенные ошибки

Передача не массива
$string = 'не массив';
echo implode(', ', $string);
Warning: implode(): Argument #2 ($array) must be of type ?array, string given
Использование ассоциативных массивов

Функция работает только со значениями, ключи игнорируются.

$assoc = ['a' => 'один', 'b' => 'два'];
echo implode(', ', $assoc);
один, два
Многомерные массивы
$multi = [[1, 2], [3, 4]];
echo implode(', ', $multi);
Warning: Array to string conversion
Array, Array
Неправильный порядок аргументов в новых версиях

В PHP 8.0 и выше при передаче аргументов в обратном порядке выдается предупреждение.

echo implode(['a', 'b'], '-');
Deprecated: implode(): Passing glue string after array is deprecated. Swap the parameters

Изменения в новых версиях PHP

PHP 8.0

Функция implode() теперь принимает параметры в строгом порядке: сначала разделитель, затем массив. Обратный порядок выдает предупреждение об устаревании. Также была улучшена обработка типов аргументов.

Предыдущие версии

До PHP 7.4 функция корректно работала с аргументами в любом порядке. В PHP 8.0 это поведение изменено для улучшения согласованности.

Будущие изменения

В следующих основных версиях планируется полностью удалить поддержку обратного порядка аргументов, что приведет к ошибке при его использовании.

Расширенные примеры применения

Формирование SQL-запроса
Пример php
$columns = ['name', 'email', 'age'];
$placeholders = array_fill(0, count($columns), '?');
$sql = "INSERT INTO users (" . implode(', ', $columns) . ") " .
       "VALUES (" . implode(', ', $placeholders) . ")";
echo $sql;
INSERT INTO users (name, email, age) VALUES (?, ?, ?)
Создание HTML-списка
Пример php
$items = ['Главная', 'О нас', 'Контакты'];
$html = '<ul><li>' . implode('</li><li>', $items) . '</li></ul>';
echo $html;
<ul><li>Главная</li><li>О нас</li><li>Контакты</li></ul>
Обработка данных перед объединением
Пример php
$numbers = [10, 20, 30];
$formatted = implode(', ', array_map(fn($n) => $n * 2, $numbers));
echo $formatted;
20, 40, 60
Использование с iterator_to_array()
Пример php
$generator = function() {
    yield 'первый';
    yield 'второй';
};
echo implode(' | ', iterator_to_array($generator()));
первый | второй
Объединение только определенных элементов
Пример php
$data = ['кофе', '', 'чай', null, 'сок'];
$filtered = implode(', ', array_filter($data, 'strlen'));
echo $filtered;
кофе, чай, сок
Рекурсивная обработка многомерного массива
Пример php
function deep_implode($sep, $array) {
    $result = [];
    array_walk_recursive($array, function($v) use (&$result) {
        $result[] = $v;
    });
    return implode($sep, $result);
}
$multi = ['a' => [1, 2], 'b' => [3, [4, 5]]];
echo deep_implode('-', $multi);
1-2-3-4-5
Генерация параметров командной строки
Пример php
$options = ['-v', '--output=result.txt', '--force'];
$command = 'script.php ' . implode(' ', $options);
echo $command;
script.php -v --output=result.txt --force

Аналоги функции в других языках

Python: join()

В Python метод join() вызывается у строки-разделителя, а массив передается как аргумент.

items = ['Python', 'Java', 'C++']
result = ', '.join(items)
print(result)
Python, Java, C++
JavaScript: join()

В JavaScript метод join() вызывается у массива, разделитель передается первым аргументом.

let array = ['JS', 'TS', 'Node.js'];
let result = array.join(' => ');
console.log(result);
JS => TS => Node.js
MySQL: GROUP_CONCAT()

В MySQL агрегатная функция GROUP_CONCAT() объединяет строки из группы записей.

SELECT GROUP_CONCAT(name SEPARATOR ', ') FROM products;
Продукт1, Продукт2, Продукт3
Java: String.join()

В Java, начиная с версии 8, используется статический метод String.join().

List<String> list = Arrays.asList("A", "B", "C");
String result = String.join("-", list);
System.out.println(result);
A-B-C

PHP implode function comments

En
Implode Alias of join