为什么 implode() 函数可以接受任意顺序的参数,而 explode() 不能呢?

3

implode() 函数可以基于历史原因以任何顺序接受参数,但是 explode() 函数不能。为什么呢?

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

类似于

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

为什么?

4
因为原文是这样写的,测试第一个参数的数据类型,以确定它是数组还是字符串...您会注意到它还可以接受参数为implode(数组$pieces)或者implode(字符串$glue, 数组$pieces),以允许默认粘合剂。 - Mark Baker
1个回答

3
根据implode()explode()的文档,它们只是说这是历史原因。
下面是在quora上找到的内容。此外,这个原因听起来很有道理!
引用:
我想部分原因是,explode的两个参数都是字符串,因此如果它们被交换,很难确定哪个是分隔符,哪个是原始字符串。然而,implode将一个字符串(粘合剂)和一个数组(片段)作为其参数。至少可以轻松地把它们区分开来。
“历史原因”可能指的是API设计准则的变化,在那里决定应该在“较小”的参数(needle、glue)之前使用“较大”的参数(haystack、pieces)。在此之前,implode可能使用了相反的顺序。

1
这个行为在 PHP 8 中已经改变。现在 implode() 只接受粘合剂作为第一个参数,而将要连接的字符串数组作为第二个参数。 - Timothé Malahieude

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接