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

Использование join в PHP для объединения массивов
Раздел: Работа со строками
join(string $separator, array $array): string

Функция join в PHP является псевдонимом implode. Она объединяет элементы массива в строку, используя указанный разделитель.

Назначение и применение

Используется для преобразования массива в строку. Часто применяется для создания списков, SQL-запросов, путей файлов или параметров URL.

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

Функция имеет два параметра:

  1. separator (строка) - Разделитель, который будет вставлен между элементами массива. Необязательный, но рекомендуется всегда указывать.
  2. array (массив) - Массив, элементы которого нужно объединить.

Синтаксис: join(string $separator, array $array): string или join(array $array): string.

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

Объединение массива строк:

$array = ['Яблоко', 'Банан', 'Апельсин'];
echo join(', ', $array);
Яблоко, Банан, Апельсин
С одним аргументом

Если передан только массив, элементы объединятся без разделителя:

$array = ['2023', '12', '31'];
echo join($array);
20231231
С пустым разделителем
$letters = ['a', 'b', 'c'];
echo join('', $letters);
abc
Сложный разделитель
$data = ['Иван', 'ivan@mail.ru', 'Москва'];
echo join(' | ', $data);
Иван | ivan@mail.ru | Москва
Похожие функции в PHP

Функционально идентична join, так как join является её псевдонимом. Выбор между ними - вопрос стиля.

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

$str = "a,b,c";
print_r(explode(',', $str));
Array
(
    [0] => a
    [1] => b
    [2] => c
)
sprintf с implode

Для сложного форматирования, где элементы массива нужно вставить в шаблон.

$values = [25, 'стол'];
echo sprintf('Цена: %d руб. за %s', ...$values);
Цена: 25 руб. за стол
Аналоги в других языках
Python: join

Метод строки, принимающий итерируемый объект. В Python разделитель указывается первым.

items = ['Python', 'JS', 'PHP']
result = ', '.join(items)
print(result)
Python, JS, PHP
JavaScript: join

Метод массива, аналогичен PHP, но вызывается как метод массива.

let arr = [1, 2, 3];
console.log(arr.join('-'));
1-2-3
MySQL: GROUP_CONCAT

Агрегатная функция для объединения значений строк в одной группе.

SELECT GROUP_CONCAT(name SEPARATOR ', ') FROM users;
Иван, Мария, Петр
Go: strings.Join

Функция из пакета strings, похожа на Python.

package main
import "strings"
func main() {
    elements := []string{"Go", "Rust", "C++"}
    result := strings.Join(elements, "/")
    println(result)
}
Go/Rust/C++
Типичные ошибки
Передача не массива

Если передан не массив, будет выведено предупреждение и возвращена пустая строка.

echo join(', ', 'строка');
Warning: join(): Argument #2 ($array) must be of type array, string given
Использование с многомерными массивами

Функция не рекурсивна - элементы-массивы будут преобразованы в строку 'Array'.

$array = [['a'], ['b']];
echo join(', ', $array);
Array, Array
Неявное приведение типов

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

$arr = [true, false, null];
echo join(':', $arr);
1::
Изменения в версиях PHP

В PHP 8.0 изменён порядок параметров для функции implode (и, соответственно, join). Раньше можно было указывать аргументы в любом порядке, сейчас параметр array должен быть вторым.

// До PHP 8.0 работало, сейчас deprecated
join($array, $separator);

В PHP 7.4 устарел вызов с обратным порядком параметров, в PHP 8.0 это вызывает ошибку.

Расширенные примеры
Создание SQL-запроса
Пример php
$ids = [10, 20, 30];
$query = "SELECT * FROM users WHERE id IN (" . join(',', $ids) . ")";
echo $query;
SELECT * FROM users WHERE id IN (10,20,30)
Рекурсивное объединение
Пример php
function deep_join($sep, $array) {
    foreach($array as &$value) {
        if(is_array($value)) {
            $value = deep_join($sep, $value);
        }
    }
    return join($sep, $array);
}
$data = ['a', ['b', 'c'], 'd'];
echo deep_join('-', $data);
a-b-c-d
Обработка перед объединением
Пример php
$words = ['  php  ', '  join  ', '  example  '];
$trimmed = array_map('trim', $words);
echo join('', $trimmed);
phpjoinexample
Генерация HTML списка
Пример php
$items = ['Главная', 'О нас', 'Контакты'];
$li_items = array_map(fn($item) => "<li>$item</li>", $items);
echo "<ul>\n" . join("\n", $li_items) . "\n</ul>";
<ul>
<li>Главная</li>
<li>О нас</li>
<li>Контакты</li>
</ul>
Объединение с фильтрацией
Пример php
$numbers = [1, 0, 3, 0, 5];
$filtered = array_filter($numbers);
echo join(', ', $filtered);
1, 3, 5
Многострочное объединение
Пример php
$lines = ['Первая строка', 'Вторая строка', 'Третья строка'];
echo join("\n", $lines);
Первая строка
Вторая строка
Третья строка

PHP join function comments

En
Join Alias of implode