string implode(array $pieces)
将一维数组$pieces的每个元素值转换为字符串并连接起来。
string implode(string $glue, array $pieces)
将一维数组$pieces的每个元素值转换为字符串并用$glue连接起来。
string implode(array $pieces, string $glue="")
将一维数组$pieces的每个元素值转换为字符串并用$glue连接起来。
Note:implode()可以接收两种参数顺序,这是历史原因。
实例一:
<?php
$test=["a","b","c"];
var_dump(implode($test));
?>
实例二:
<?php
$test=["a","b","c"];
var_dump(implode("|",$test));
?>
实例三:
<?php
$test=["a","b","c"];
var_dump(implode($test,"|"));
?>
这不是重载,也并不是允许重载的意思。
手册上也说了 历史原因,所谓的历史原因:
就是
Perl
中join
函数参数顺序和早期开发人员习惯的一些冲突比如早期为了保证第二个参数是
OPTIONAL
就将函数设定为了如下方式,这样的好处是可以不传递第二参数,直接将数组连接起来。后来为了规范改成了
Perl
的join
参数顺序:也就是字符串参数在前,
但是在编程过程中,很大部分时间内都无需连接的字符串(第一个参数),
如果传递一个空字符串,浪费机器性能,所以,就保留了历史写法。
这也是PHP唯一的可以乱写顺序的函数。
相比
jQuery
的animate
的参数顺序,这算小巫见大巫了。要说这个函数的实现,也只有一个C的实现,
「重载」方法并不复杂,就是判断arg的参数数量、类型,源码
下面PHP的C源码中,对于参数的顺序处理也并不复杂