为什么这会在开头返回空白空间


why does this return empty space in beginning?

<?php
$here = "/1/2/3/4/ ";
$test = explode('/', $here);
var_export($test);
?>

为什么输出有一个 0 => '' .. 不应该是 0 => 1

array (
  0 => '',
  1 => '1',
  2 => '2',
  3 => '3',
  4 => '4',
  5 => ' ',
)

因为您的字符串以/开头,并且explode()使用您指定的分隔符将字符串拆分为数组 ( / (。每次爆炸遇到你的分隔符时,它都会取自最后一个分隔符以来它前面的任何字符并将其添加到数组中(explode()从左到右操作(。

即使分隔符

前面没有任何内容(例如,当您的字符串以分隔符开头或您有两个背靠背的分隔符时(,也会发生这种情况。

你可能想要这样的东西:

$test = explode('/', trim($here, '/'));

这将修剪前导斜杠或尾随斜杠,避免空数组项。您可能还希望将其与array_filter()结合使用以删除空项目,如下所示:

$test = array_filter(explode('/', $here));
为此,如果您给它"/1/2/3///4/5

/",您仍然只会得到 [1,2,3,4,5]。

因为前导斜杠。这不会。

$here = "1/2/3/4/ ";
$test = explode('/', $here);
var_export($test);

由于尾部斜杠,您还有一个空数组元素。

因为分隔符位于字符串的开头。

同样,如果在字符串的末尾找到分隔符,则空字符串将是数组的最后一个元素。

您可以通过从字符串的开头和结尾删除分隔符字符串来解决此问题,例如。 带修剪:

$test = explode('/', trim($here, '/'));