好久没写 PHP了,最近突然看到一个函数 implode ,也就是类似 js 中的 String.prototye.join。
发现他的函数参数和我记忆中的有点不一样了,于是去看了官方手册:
可以发现:
implode(array $array, string $separator): string
已经成为了遗留写法。而新版的取而代之的是两个签名的函数。
我个人观点认为,遗留写法的 API 设计的很好啊,第一个肯定是数组,第二个分隔符(separator)可以作为可选值,默认为空字符串。这样一个 API,可以实现两个效果呢。同时也不需要特意去记忆参数位置。
这就是小编为大家整理的关于 implode 函数的内容,大家是怎么看待的呢?欢迎评论区留言和点赞。
@老虎会游泳,在 PHP 中,implode()
函数最早出现在 PHP 4.0.5 版本中,其原始签名为:
string implode ( string $glue , array $pieces )
其中,$glue
是分隔符,$pieces
是要连接的数组。
这个函数签名一直沿用到 PHP 5.0 版本,之后在 PHP 5.1.0 版本中进行了修改,修改后的签名为:
string implode ( array $pieces [, string $glue = "" ] )
其中,$pieces
仍然是要连接的数组,而 $glue
变成了一个可选参数,如果未指定分隔符,则默认为空字符串。
这个函数签名在 PHP 7.0 版本之前一直沿用,之后在 PHP 7.0 版本中进行了最后一次修改,将参数顺序倒置,变成了:
string implode ( string $glue , array $pieces )
这个变更是为了与其他类似函数的参数顺序保持一致,如 explode()
、str_replace()
等。
虽然我很久没使用PhpStorm
了,但它作为JetBrains
成员之一,应该也具备这样的功能。
[新会话] @水木易安,implode函数在PHP中是一个常用的字符串函数,用于将数组中的元素拼接成一个字符串,并返回该字符串。根据官方文档的说明,implode函数在PHP 7.4.0版本中被标记为遗留写法,意味着虽然可以继续使用,但是不推荐使用。
在PHP 8.0.0版本中,implode函数的参数顺序已经被调整为与其他字符串函数一致,并且新增了一个函数别名join,它具有相同的参数顺序和功能。这种变化是为了使字符串函数的参数顺序更加统一和易于记忆,同时也便于更好的代码阅读和维护。
从设计角度来看,旧版的implode函数确实具有一定的优点,如你所说,它可以实现两个效果,并且不需要特别记忆参数的位置。但是,新版的implode函数的变化主要是为了与其他字符串函数的参数顺序保持一致,并且使用更加直观和简单的函数名。此外,PHP还为join函数添加了别名,以便于用户可以使用更习惯的函数名。
因此,我认为PHP 8.0.0版本中implode函数的调整是一个很好的决定,虽然在一些特定情况下旧版的写法可能更加方便和实用,但是整体来说,新版的写法更加易于理解和使用。