我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

字符串拆分是大家写php程序的时候,经常使用到的。很久之前,苏南大叔喜欢使用split()join()。后来,split()函数莫名其妙的被explode()函数给取代了。与时俱进之后,发现join()函数,其实也有个对应的implode()函数。这就是本文的写作初衷了。

苏南大叔:php函数解析,字符串拆分函数join/implode/split/explode - php-implode
php函数解析,字符串拆分函数join/implode/split/explode(图2-1)

本文测试环境:win10,php@7.3.4nts

字符串分割

至今也想不明白,非常好用的split(),咋就变成了explode()。既然时代抛弃了split(),那么就让他飘过吧。

explode ( string $delimiter , string $string [, int $limit ] ) : array

范例如下:

$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *

字符串合并

苏南大叔日常是使用join()函数的,后来根据官方说明,原来join()implode()函数的别名。

implode ( string $glue , array $pieces ) : string
$arr = array('Hello','World!','Beautiful','Day!');
echo join(" ",$arr);  //Hello World! Beautiful Day!
$array = array('lastname', 'email', 'phone');
echo implode(",", $array); // lastname,email,phone

特别提示

这里有个非常有意思的罕见小知识,implode()的两个参数可以互换,得到的将会是同样的结果。而explode()函数,却并不能做到同样的事情,两个参数并不能互换。

$array = array('lastname', 'email', 'phone');
echo implode(",", $array); // lastname,email,phone
echo implode($array,",");  // lastname,email,phone 
// Deprecated: implode(): Passing glue string after array is deprecated. 

$str ="lastname,email,phone";
var_dump(explode(",",$str)); // ["lastname","email","phone"]
var_dump(explode($str,",")); // [","]

苏南大叔:php函数解析,字符串拆分函数join/implode/split/explode - php-implode-more
php函数解析,字符串拆分函数join/implode/split/explode(图2-2)

在这个例子中,可以得出下面的结论:

  • join()等于implode(),用于合并字符串,数组变字符串。
  • split()等于explode(),用于分割字符串,字符串变数组。
  • 推荐使用的是:implode()explode()
  • 推荐的参数顺序是:先$glue$array
  • 合并字符串的时候,如果先$array$glue的话,会得到Deprecated警告信息。
  • 分割字符串的时候,如果先$array$glue的话,会得到错误的答案。

相关链接

总结

一些函数,平时用着用着,就没多想过。结果看看文档,还能看出来亲戚关系来。真是很有意思啊。对吧?

更多php函数分析,请参考苏南大叔的博客:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php