【问题标题】:array_shift() expects parameter 1 to be arrayarray_shift() 期望参数 1 是数组
【发布时间】:2020-12-05 05:13:39
【问题描述】:

我在共享主机中使用我的应用程序,它是在 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);
    }

【问题讨论】:

  • 你能展示创建ArgvInput对象的代码吗?
  • 这一行array_shift($argv);$argv为空,应该是一个数组,你可以这样做if(is_array($argv)) { array_shift($argv); }
  • 我认为您在 $_SERVER['argv'] 中的 'argv' 上没有密钥;
  • 尝试在if 语句之后打印$argv 的值。它将帮助您确定$argv 的值。并且还将清除$_SERVER['argv']中没有'argv'上的任何密钥的猜测@

标签: php laravel argv


【解决方案1】:

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

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

这样你总是有一个数组,即使没有输入,在这种情况下数组将为空,并且不会触发该错误

【讨论】:

    猜你喜欢
    • 2020-06-17
    • 2017-05-03
    • 2013-08-04
    • 1970-01-01
    • 2018-11-10
    • 2015-08-25
    • 1970-01-01
    • 2020-12-30
    • 2019-06-01
    相关资源
    最近更新 更多