为什么这会在开始时返回空白区域?

时间:2015-02-12 19:52:50

标签: php

<?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 => ' ',
)

3 个答案:

答案 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, '/'));