array_shift期望参数1为数组

问题描述

我在共享主机中使用我的应用程序,它是在laravel中产生的。它给了我

PHP警告:array_shift()期望参数1为数组,第53行给出null

PHP注意:未定义的索引:第49行中的argv

使用以下代码

class ArgvInput extends Input
{
    private $tokens;
    private $parsed;

    public function __construct(array $argv = null,InputDeFinition $deFinition = null)
    {
        if (null === $argv) {
            $argv = $_SERVER['argv'];
        }

        // strip the application name
        array_shift($argv);

        $this->tokens = $argv;

        parent::__construct($deFinition);
    }

解决方法

这可能意味着$_SERVER['argv']变量也为空。我建议先检查一下,或者您可以这样做:

$argv = $argv ?? $_SERVER['argv'] ?? [];

这样,即使没有输入,您也将始终拥有一个数组,在这种情况下,该数组将为空,并且不会触发该错误