PHP中explode("/", "///")返回4个元素而非3个的原因咨询
为啥
explode("/", "///")会返回4个元素? 哈哈,这个问题其实是PHP里explode()函数的默认逻辑导致的,我给你掰扯清楚:
你看,当用"/"去分割"///"这个字符串的时候,咱们可以把整个字符串拆成这几个部分:
- 第一个
/前面:啥都没有,是空字符串 - 第一个和第二个
/中间:还是啥都没有,空字符串 - 第二个和第三个
/中间:依旧是空字符串 - 第三个
/后面:还是空字符串
这不就凑够4个空元素了嘛!explode()的规则就是会保留分隔符之间、开头和结尾的所有内容——哪怕是空的,也会当成一个元素存进数组里。
给你举两个对比例子更清楚:
- 比如
explode("/", "a/b/c"),得到的是["a", "b", "c"],3个元素,因为分隔符都夹在有效内容中间 - 要是
explode("/", "/a/b/c/"),就会得到["", "a", "b", "c", ""],5个元素,开头和结尾的空字符串都被保留了
如果想去掉这些空元素,其实很简单,用array_filter()过滤一下就行:
$pieces = explode("/", "///"); $pieces = array_filter($pieces); // 自动过滤掉空字符串元素 print_r($pieces); // 输出空数组
或者也可以先把字符串首尾的/去掉再分割:
$pieces = explode("/", trim("///", "/")); print_r($pieces); // 同样输出空数组,因为trim后字符串变成空的了
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

