implode
(PHP 4, PHP 5, PHP 7, PHP 8)
implode — 配列要素を文字列により連結する
説明
代替のシグネチャ(名前付き引数をサポートしていません):
古いシグネチャ(PHP 7.4.0 で非推奨となり、PHP 8.0.0 以降は削除されています):
配列の要素を separator
文字列で連結します。
パラメータ
separator
-
オプションです。 デフォルトは空文字列です。
array
-
連結したい文字列の配列。
戻り値
すべての配列要素の順序を変えずに、各要素間に
separator
文字列をはさんで 1 つの文字列にして返します。
変更履歴
バージョン | 説明 |
---|---|
8.0.0 |
array の後に separator
を渡すことは、サポートされなくなりました。
|
7.4.0 |
array の後に separator
を渡すこと
(つまり、古いシグネチャを使うこと)
は、推奨されなくなりました。
|
例
例1 implode() の例
<?php
$array = ['lastname', 'email', 'phone'];
var_dump(implode(",", $array)); // string(20) "lastname,email,phone"
// 空の配列を使うと空文字列となります
var_dump(implode('hello', [])); // string(0) ""
// separator はオプションです。
var_dump(implode(['a', 'b', 'c'])); // string(3) "abc"
?>
注意
注意: この関数はバイナリデータに対応しています。
参考
- explode() - 文字列を文字列により分割する
- preg_split() - 正規表現で文字列を分割する
- http_build_query() - URL エンコードされたクエリ文字列を生成する
+add a note
User Contributed Notes 9 notes
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: ''
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
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! ;)
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
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.
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
?>
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.
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.