如何解决“从空值创建默认对象”错误?

时间:2018-10-22 14:24:01

标签: php

我正在使用PHP 5.6,并具有以下代码:

$page->adminNavi[$i]->active    = _SITE == $file || _ACTIV_NAVI == $key ? true : false;

在上述行中,我收到以下错误:

  

从中的空值创建默认对象

如何解决此错误?

1 个答案:

答案 0 :(得分:1)

错误是由以下原因引起的:

$page->adminNavi[$i]->active 

未设置$page或对象,或者adminNavi不是数组,或者adminNavi[$i]不存在,或者不是stdClass

调试它!

var_dump($page->adminNavi); exit;

如果幸运的话,您将获得一个数组。在这种情况下,请使用var dump array key $i并查看其中的内容。

  

更新:好的,所以var dump返回了

array(1) { [0]=> object(stdClass)#2 (1) { ["active"]=> bool(false) } } 

$i会更改多少次?如果它不是0,则该数组键将不存在,但是您可以像使用它一样立即对其进行引用,并且由于您将其像stdClass一样对待,因此它会即时创建一个,但会生成警告。

总而言之,通过对数组进行计数来确保$i存在!如果$i是通过循环设置的,则如下所示:

for ($i = 0; $i <= count($page->adminNavi): $i++) {
    // your code
}