implode

(PHP 4, PHP 5, PHP 7)

implodeUne elementos de un array en un string

Descripción

string implode ( string $glue , array $pieces )
string implode ( array $pieces )

Une elementos de un array en un string con glue (pegamento).

Nota:

Por razones históricas implode() puede aceptar parámetros en cualquier orden. Para matener una consistencia respecto a explode(), puede que sea menos confuso usar el orden de argumentos de la documentación.

Parámetros

glue

Por defecto es un string vacío.

pieces

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.

Ejemplos

Ejemplo #1 Ejemplo de implode()

<?php

$array 
= array('apellido''email''teléfono');
$separado_por_comas implode(","$array);

echo 
$separado_por_comas// apellido,email,teléfono

// Devuelve un string vacío si se usa un array vacío:
var_dump(implode('hola', array())); // string(0) ""

?>

Notas

Nota: Esta función es segura binariamente.

Ver también

add a note add a note

User Contributed Notes 13 notes

up
190
houston_roadrunner at yahoo dot com
8 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
91
omar dot ajoue at kekanto dot com
4 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
61
php.net {at} nr78 {dot} net
12 years ago
Also quite handy in INSERT statements:

<?php

  
// array containing data
  
$array = array(
     
"name" => "John",
     
"surname" => "Doe",
     
"email" => "j.doe@intelligence.gov"
  
);

  
// build query...
  
$sql  = "INSERT INTO table";

  
// implode keys of $array...
  
$sql .= " (`".implode("`, `", array_keys($array))."`)";

  
// implode values of $array...
  
$sql .= " VALUES ('".implode("', '", $array)."') ";

  
// execute query...
  
$result = mysql_query($sql) or die(mysql_error());

?>
up
28
Anonymous
4 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
2
Felix Rauch
6 months 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
26
alexey dot klimko at gmail dot com
5 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
1
mulahalilovic at yahoo dot com
3 months ago
<?php

//Basic loop into <li>, maybe for some help

$some_string= 'jordan pippen rodman jeckson divac shaq';

$string_to_array= explode(' ',$some_string);

foreach (
$string_to_array as $value):
   
        echo
"<li>";

            echo
$value;

        echo
"</li>";
   

    endforeach;

?>

/*jordan
pippen
rodman
jeckson
divac
shaq
*/
up
2
radoslaw dot paluszak at gmail dot com
11 months ago
A very neat option to limit the number of pieces being imploded is by using array_slice (http://php.net/array_slice):

<?php
$picnames
= array("pic1.jpg", "pic2.jpg", "pic3.jpg", "pic4.jpg", "pic5.jpg", "pic6.jpg", "pic7.jpg");
$allpics = implode("|", array_slice($picnames, 0, 5)); 
?>

Hope it helps!
up
10
masterandujar
4 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
1
Anonymous
1 year 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
?>
up
0
theo dot van dot eijndhoven at chello dot nl
6 days ago
implode stops upon encountering NULL

$myArray = ('one', 'two', 'three', null, 'four', 'five');
echo implode(', ', $myArray);

output:
one, two, three
up
0
Jacques Amar
3 years ago
Safe way to pass as parameters in IN

<?php
$id_nums
= array(1,6,12,18,24);
$p_types = '';
$qs    = array();
foreach (
$id_nums as $id) {
   
$qs[]   = '?';
   
$p_types .= 'i'; // or whatever type
}
$nums_list = implode(',', $qs);
            
$sqlquery = "Select name,email,phone from usertable where user_id IN ($nums_list)";

$stmt = $dbh->stmt_init();
$stmt->prepare($sqlquery);
// later on, instead of bind:
$parms_array = array_merge(array($p_types), $id_nums);
call_user_func_array(array($stmt,'bind_param'), $parms_array );

// $sqlquery becomes "Select name,email,phone from usertable where user_id IN (?,?,?,?,?)"
?>
up
-82
cottton at i-stats dot net
2 years ago
in case you want to implode by keys:
<?php
const POSITION_KEY = 0;
const
POSITION_VAL = 2;
const
POSITION_DESC = 1;

$key = 'key';
$val = 'val';
$desc = 'desc';

$arr = array(
   
POSITION_KEY => $key,
   
POSITION_VAL => $val,
   
POSITION_DESC => $desc,
);
echo
kimplode('=',$arr); // key=desc=val
echo '<br>';
echo
krimplode('=',$arr); // val=desc=key

function kimplode($glue,$arr){
   
ksort($arr);
    return
implode($glue,$arr);
}
function
krimplode($glue,$arr){
   
krsort($arr);
    return
implode($glue,$arr);
}
?>
To Top