implode

(PHP 4, PHP 5, PHP 7)

implode将一个一维数组的值转化为字符串

说明

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

glue 将一维数组的值连接为一个字符串。

Note:

因为历史原因,implode() 可以接收两种参数顺序,但是 explode() 不行。不过按文档中的顺序可以避免混淆。

参数

glue

默认为空的字符串。

pieces

你想要转换的数组。

返回值

返回一个字符串,其内容为由 glue 分割开的数组的值。

范例

Example #1 implode() 例子

<?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) ""

?>

注释

Note: 此函数可安全用于二进制对象。

参见

User Contributed Notes

veyselkorkmaz44 at gmail dot com 06-Nov-2017 05:01
<?php

$dizi
= array('soyad?', 'eposta', 'telefon');
$virgül_ayra?l? = implode(",", $array);

echo
$virgül_ayra?l?; // soyad?,eposta,telefon

?>

BU ??LEM YANLI?!!!!

$array yerine $dizi olmas? gerekiyordu...yanii.....

<?php

$dizi
= array('soyad?', 'eposta', 'telefon');
$virgül_ayra?l? = implode(",", $dizi);

echo
$virgül_ayra?l?; // soyad?,eposta,telefon

?>
admin at lanlink dot net dot au 15-Sep-2017 01:24
It is possible for an array to have numeric values, as well as string values. Implode will convert all numeric array elements to strings.

<?php
$test
=implode(["one",2,3,"four",5.67]);
echo
$test;
//outputs: "one23four5.67"
?>
erkan karata 23-Aug-2017 04:12
Dizi i?erisindeki veriyi istenilen yap??t?r?c? ile birle?tirir.

<?php
echo implode(' ', ['lorem','dolor','sit','amed']); //lorem dolor sit amed
?>
theo dot van dot eijndhoven at chello dot nl 21-Apr-2017 05:20
implode stops upon encountering NULL

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

output:
one, two, three
mulahalilovic at yahoo dot com 31-Dec-2016 04:46
<?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
*/
Felix Rauch 30-Sep-2016 06:39
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
radoslaw dot paluszak at gmail dot com 09-May-2016 08:24
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!
Anonymous 20-Jul-2015 08:55
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
?>
cottton at i-stats dot net 11-May-2014 07:57
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);
}
?>
Jacques Amar 12-Apr-2014 04:26
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 (?,?,?,?,?)"
?>
omar dot ajoue at kekanto dot com 18-Mar-2013 11:21
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! ;)
Anonymous 27-Feb-2013 12:56
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.
masterandujar 03-Sep-2012 03:15
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.
alexey dot klimko at gmail dot com 23-Jun-2011 02:04
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.
houston_roadrunner at yahoo dot com 07-Apr-2009 08:50
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: ''
php.net {at} nr78 {dot} net 30-Mar-2005 03:50
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());

?>