我有以下代码:
$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
答案 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
数组将不再包含该元素。
有关该方法的更多信息,请参见official documentation。