<?php
$here = "/1/2/3/4/ ";
$test = explode('/', $here);
var_export($test);
?>
为什么输出有0 =&gt; &#39;&#39; ..不应该是0 =&gt; 1
array (
0 => '',
1 => '1',
2 => '2',
3 => '3',
4 => '4',
5 => ' ',
)
答案 0 :(得分:8)
因为您的字符串以/
开头,而explode()
使用您指定的分隔符(/
)将字符串拆分为数组。每次爆炸遇到你的分隔符时,它将从最后一个分隔符开始将它前面的任何字符添加到数组中(explode()
从左到右操作)。
即使分隔符前面没有任何内容(例如,当您的字符串以分隔符开头或者您有两个分隔符背靠背时),也会发生这种情况。
你可能想要这样的东西:
$test = explode('/', trim($here, '/'));
将修剪前导或尾部斜杠,避免空数组项。您可能还希望将其与array_filter()
结合使用以删除空项目,如下所示:
$test = array_filter(explode('/', $here));
为此,如果你给它&#34; / 1/2/3 // 4/5 /&#34;你仍然只能[1,2,3,4,5]。
答案 1 :(得分:2)
由于领先的斜线。这不会。
$here = "1/2/3/4/ ";
$test = explode('/', $here);
var_export($test);
由于尾部斜杠,您还有一个空数组元素。
答案 2 :(得分:0)
因为在字符串的开头找到了分隔符。
同样,如果在字符串的末尾找到分隔符,那么空字符串将是数组的最后一个元素。
您可以通过从字符串的开头和结尾删除分隔符字符串来解决此问题,例如。修剪:
$test = explode('/', trim($here, '/'));