Php 如何解决“问题”;从“中的空值”创建默认对象;错误?

Php 如何解决“问题”;从“中的空值”创建默认对象;错误?,php,Php,我使用的是PHP5.6,代码如下: $page->adminNavi[$i]->active = _SITE == $file || _ACTIV_NAVI == $key ? true : false; 在上述行中,我收到以下错误: 从中的空值创建默认对象 如何修复此错误?此错误源于: $page->adminNavi[$i]->active $page不是设置或对象,或者adminNavi不是数组,或者adminNavi[$i]不存在,或者不是stdCla

我使用的是PHP5.6,代码如下:

$page->adminNavi[$i]->active    = _SITE == $file || _ACTIV_NAVI == $key ? true : false;
在上述行中,我收到以下错误:

从中的空值创建默认对象


如何修复此错误?

此错误源于:

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

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

调试它


var\u dump($page->adminNavi);退出

幸运的话,你会得到一个数组。在这种情况下,var转储数组键
$i
,并查看其中的内容

更新:好的,那么var转储返回这个

$i
改变了多少次?如果它不是
0
,则该数组键将不存在,但您会立即像引用它一样引用它,并且由于您将其视为
stdClass
,因此它会动态创建一个数组键,但会生成警告

综上所述,通过对数组进行计数,确保存在
$i
!如果从循环中设置了
$i
,则如下所示:

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

错误是什么?是否定义了
\u SITE
\u ACTIV\u NAVI
常量?可能应该是
\u ACTIVE\u NAVI
?您忘记提供错误。您不需要三元
\u ACTIV\u NAVI==$key?真:假。就其本身而言,
\u ACTIV\u NAVI=$key
返回true或false alreadyEither
$page
不是对象,或者
$page->adminNavi[$i]
不是对象。调试你的代码。数组(1){[0]=>object(stdClass)#2(1){[“active”]=>bool(false)}}$page->adminNaviupdated看看
for ($i = 0; $i <= count($page->adminNavi): $i++) {
    // your code
}