PHP-爆炸应该返回数组,但在array_shift上给出字符串

时间:2019-06-05 22:01:55

标签: php arrays string types

我有以下代码:

$path = ltrim($_SERVER['REQUEST_URI'], '/');
$elements = explode('/', $path);
var_dump($elements);
echo is_array($elements) ? 'true' : 'false';
$elements=array_shift($elements);

explode(delimeter, string)应该返回array。它以is_array(bool)返回true的形式返回,但是array_shift(array)给出以下错误:

Warning
: array_shift() expects parameter 1 to be array, string given in

即使$elements是数组,为什么会发生这种情况?

PHP 7.2.19

1 个答案:

答案 0 :(得分:1)

array_shift()方法将数组的第一个值移开并返回它。因此,如果您运行

$elements = array_shift($elements);

$elements的内容将是数组的第一个元素(在您的情况下为字符串)。

您可以像这样使用它:

$path = ltrim('/path/to/resource', '/');
$elements = explode('/', $path);
$first_element = array_shift($elements);
var_dump($first_element, $elements);

并且数组的第一个元素将在变量$first_element中。 $elements数组将不再包含该元素。

演示:https://3v4l.org/DHcsJ

有关该方法的更多信息,请参见official documentation