【问题标题】:How to fix an "Creating default object from empty value in" error? [duplicate]如何修复“从空值创建默认对象”错误? [复制]
【发布时间】:2019-03-26 15:58:35
【问题描述】:

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

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

在上面一行,我收到以下错误:

从空值创建默认对象

我该如何解决这个错误?

【问题讨论】:

  • 错误是什么?
  • _SITE_ACTIV_NAVI 定义的常量吗?也许应该是_ACTIVE_NAVI
  • 您忘记提供错误信息。
  • 你不需要三元 _ACTIV_NAVI == $key ? true : false;。就其本身而言,_ACTIV_NAVI == $key 已经返回 true 或 false
  • 要么$page 不是对象,要么$page->adminNavi[$i] 不是对象。调试你的代码。

标签: php


【解决方案1】:

错误来自于此:

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

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

调试它!

var_dump($page->adminNavi); exit;

运气好的话,你会得到一个数组。在这种情况下 var dump array key $i 看看里面有什么。

更新:好的,所以 var 转储返回这个

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
}

【讨论】:

  • array(1) { [0]=> object(stdClass)#2 (1) { ["active"]=> bool(false) } }
  • $page->adminNavi
  • 更新看看
猜你喜欢
  • 2013-09-29
  • 2010-12-29
  • 2020-11-04
  • 2018-12-22
  • 2019-01-15
  • 2016-10-11
  • 2013-01-26
  • 1970-01-01
  • 2017-01-22
相关资源
最近更新 更多