PHP: implode - Manual
(PHP 4, PHP 5, PHP 7, PHP 8)
implode — Une elementos de un array en un string
Descripción
Firma alternativa (no se admite argumentos con nombre):
Firma heredada (obsoleta a partir de PHP 7.4.0, eliminada a partir de PHP 8.0.0):
Parámetros
separator-
Opcional. Por defecto es un string vacío.
array-
El array de strings a ser usados por implode.
Valores devueltos
Devuelve un string que contiene la representación de todos los elementos del array en el mismo orden, con el string 'glue' entre cada elemento.
Historial de cambios
| Versión | Descripción |
|---|---|
| 8.0.0 |
Pasar el parámetro separator después del array
ya no es compatible.
|
| 7.4.0 |
Pasar el parámetro separator después del array
(es decir, sin utilizar el orden documentado de los parámetros) es obsoleto.
|
Ejemplos
Ejemplo #1 Ejemplo de implode()
<?php
$array
= ['lastname', 'email', 'phone'];
var_dump(implode(",", $array)); // string(20) "lastname,email,phone"// Devuelve un string vacío si se usa un array vacío:
var_dump(implode('hello', [])); // string(0) ""// El separador es opcional:
var_dump(implode(['a', 'b', 'c'])); // string(3) "abc"?>
Notas
Nota: Esta función es segura para sistemas binarios.
Ver también
- explode() - Divide una string en segmentos
- preg_split() - Divide una cadena mediante expresión regular
- http_build_query() - Genera una string de consulta con codificación URL
Found A Problem?
houston_roadrunner at yahoo dot com ¶
16 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: ''7 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,sixomar dot ajoue at kekanto dot com ¶
13 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! ;)alexey dot klimko at gmail dot com ¶
14 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.9 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; qux5 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
?>13 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.13 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.