运行artisan basset时出现array_keys错误

时间:2013-12-29 05:30:47

标签: php laravel

当我从命令行运行php artisan basset --tidy-up时,我收到了正在进行的错误异常。

[ErrorException] 
array_keys() expects parameter 1 to be array, object given

basset [--delete-manifest] [--tidy-up]

我很遗憾在网上找到任何细节。

1 个答案:

答案 0 :(得分:0)

虽然我没有使用过Basset,但是这个错误的原因是你为array_keys的第一个参数传入了一个对象,而不是一个数组。

例如,我是否有如下数组:

$myGreatArray = array('first' => 'foo', 'bar' => 'sup');

然后将其传递给数组键:

print_r(array_keys($myGreatArray));

我将此作为输出:

Array
(
    [0] => first
    [1] => bar
)

但是,我不能对一个对象做同样的事情,即使它的结构方式相同。

换句话说,我们不能做这样的事情(不仅仅是因为你需要var_dump对象,还因为你需要将数组传递给array_keys()):

$myGreatArray = new stdClass;
$myGreatArray->first = 'foo';
$myGreatArray->bar = 'sup';
print_r(array_keys($myGreatArray));

您会收到类似于您所看到的错误,但您看到的内容似乎是由Basset处理的exception格式。从命令行以外的位置运行脚本时,您也可以看到它,具体取决于您的error reporting级别。

编辑:

我刚刚提取了Basset's command line script的来源,看起来你在line 120上收到了错误,内容如下:

$collections = array_keys($this->environment->all()) + array_keys($this->manifest->all());

您可能想要检查清单和环境的结构方式。