ConFoo: Call for paper is now Open

implode

(PHP 4, PHP 5)

implodeJoin array elements with a string

Opis

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

Join array elements with a glue string.

Informacja:

implode() can, for historical reasons, accept its parameters in either order. For consistency with explode(), however, it may be less confusing to use the documented order of arguments.

Parametry

glue

Defaults to an empty string. This is not the preferred usage of implode() as glue would be the second parameter and thus, the bad prototype would be used.

pieces

The array of strings to implode.

Zwracane wartości

Returns a string containing a string representation of all the array elements in the same order, with the glue string between each element.

Rejestr zmian

Wersja Opis
4.3.0 The glue parameter became optional.

Przykłady

Przykład #1 implode() example

<?php

$array 
= array('lastname''email''phone');
$comma_separated implode(","$array);

echo 
$comma_separated// lastname,email,phone

// Empty string when using an empty array:
var_dump(implode('hello', array())); // string(0) ""

?>

Notatki

Informacja: Ta funkcja jest bezpieczna dla danych binarnych.

Zobacz też:

add a note add a note

User Contributed Notes 8 notes

up
84
houston_roadrunner at yahoo dot com
5 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
21
omar dot ajoue at kekanto dot com
1 year 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
22
php.net {at} nr78 {dot} net
9 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
14
alexey dot klimko at gmail dot com
3 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
11
Anonymous
1 year 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
Jacques Amar
5 months 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
4
masterandujar
2 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
cottton at i-stats dot net
4 months 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