PHP Conference Japan 2024

implode

(PHP 4, PHP 5, PHP 7, PHP 8)

implodeОбъединяет элементы массива в строку

Описание

implode(string $separator, array $array): string

Альтернативная сигнатура (не поддерживается с именованными аргументами):

implode(array $array): string

Устаревшая сигнатура (устарела с PHP 7.4.0, а в PHP 8.0.0 разработчики удалили сигнатуру):

implode(array $array, string $separator): string

Функция присоединяет элементы массива через строку-разделитель separator.

Список параметров

separator

Необязательный. По умолчанию равен пустой строке.

array

Массив объединяемых строк.

Возвращаемые значения

Функция возвращает строку, которая содержит строковое представление элементов массива в том же порядке, со строкой-разделителем между каждым элементом.

Список изменений

Версия Описание
8.0.0 Функция больше не поддерживает передачу разделителя separator после массива array.
7.4.0 Передача разделителя separator после массива array, т. е. сигнатура, которая досталась в наследство, устарела.

Примеры

Пример #1 Пример использования функции implode()

<?php

$array
= ['имя', 'почта', 'телефон'];
var_dump(implode(",", $array)); // string(32) "имя,почта,телефон"

// Пустая строка при использовании пустого массива:
var_dump(implode('привет', [])); // string(0) ""

// Параметр separator не обязателен:
var_dump(implode(['a', 'b', 'c'])); // string(3) "abc"

?>

Примечания

Замечание: Функция безопасна для обработки данных в двоичной форме.

Смотрите также

  • explode() - Разбивает строку разделителем
  • preg_split() - Разбивает строку по регулярному выражению
  • http_build_query() - Генерирует URL-кодированную строку запроса

Добавить

Примечания пользователей 9 notes

up
364
houston_roadrunner at yahoo dot com
15 years ago
it should be noted that an array with one or no elements works fine. for example:

<?php
$a1
= array("1","2","3");
$a2 = array("a");
$a3 = array();

echo
"a1 is: '".implode("','",$a1)."'<br>";
echo
"a2 is: '".implode("','",$a2)."'<br>";
echo
"a3 is: '".implode("','",$a3)."'<br>";
?>

will produce:
===========
a1 is: '1','2','3'
a2 is: 'a'
a3 is: ''
up
98
ASchmidt at Anamera dot net
6 years ago
It's not obvious from the samples, if/how associative arrays are handled. The "implode" function acts on the array "values", disregarding any keys:

<?php
declare(strict_types=1);

$a = array( 'one','two','three' );
$b = array( '1st' => 'four', 'five', '3rd' => 'six' );

echo
implode( ',', $a ),'/', implode( ',', $b );
?>

outputs:
one,two,three/four,five,six
up
104
omar dot ajoue at kekanto dot com
11 years ago
Can also be used for building tags or complex lists, like the following:

<?php

$elements
= array('a', 'b', 'c');

echo
"<ul><li>" . implode("</li><li>", $elements) . "</li></ul>";

?>

This is just an example, you can create a lot more just finding the right glue! ;)
up
27
Felix Rauch
8 years ago
It might be worthwhile noting that the array supplied to implode() can contain objects, provided the objects implement the __toString() method.

Example:
<?php

class Foo
{
protected
$title;

public function
__construct($title)
{
$this->title = $title;
}

public function
__toString()
{
return
$this->title;
}
}

$array = [
new
Foo('foo'),
new
Foo('bar'),
new
Foo('qux')
];

echo
implode('; ', $array);
?>

will output:

foo; bar; qux
up
47
alexey dot klimko at gmail dot com
13 years ago
If you want to implode an array of booleans, you will get a strange result:
<?php
var_dump
(implode('',array(true, true, false, false, true)));
?>

Output:
string(3) "111"

TRUE became "1", FALSE became nothing.
up
9
Honk der Hase
4 years ago
If you want to implode an array as key-value pairs, this method comes in handy.
The third parameter is the symbol to be used between key and value.

<?php
function mapped_implode($glue, $array, $symbol = '=') {
return
implode($glue, array_map(
function(
$k, $v) use($symbol) {
return
$k . $symbol . $v;
},
array_keys($array),
array_values($array)
)
);
}

$arr = [
'x'=> 5,
'y'=> 7,
'z'=> 99,
'hello' => 'World',
7 => 'Foo',
];

echo
mapped_implode(', ', $arr, ' is ');

// output: x is 5, y is 7, z is 99, hello is World, 7 is Foo

?>
up
20
Anonymous
11 years ago
It may be worth noting that if you accidentally call implode on a string rather than an array, you do NOT get your string back, you get NULL:
<?php
var_dump
(implode(':', 'xxxxx'));
?>
returns
NULL

This threw me for a little while.
up
13
masterandujar
12 years ago
Even handier if you use the following:

<?php
$id_nums
= array(1,6,12,18,24);

$id_nums = implode(", ", $id_nums);

$sqlquery = "Select name,email,phone from usertable where user_id IN ($id_nums)";

// $sqlquery becomes "Select name,email,phone from usertable where user_id IN (1,6,12,18,24)"
?>

Be sure to escape/sanitize/use prepared statements if you get the ids from users.
up
7
Anonymous
9 years ago
null values are imploded too. You can use array_filter() to sort out null values.

<?php
$ar
= array("hello", null, "world");
print(
implode(',', $ar)); // hello,,world
print(implode(',', array_filter($ar, function($v){ return $v !== null; }))); // hello,world
?>
To Top