PHP - 尝试获取非对象的属性

3

我正在尝试遍历一个包含数组的对象属性items:

foreach ($this->footerList->items as $item)

当我执行此语句时,出现错误提示 - "尝试获取非对象的属性",即使...
var_dump($this->footerList) 

显示$this->footerList确实包含一个items数组。

object(FooterModel)#13 (1) 
{ 
    ["items"]=> array(3) 
    { 
        [0]=> array(5) 
        { 
             ["id"]=> string(20) "terms-and-conditions" 
             ["title"]=> string(20) "Terms and Conditions" 
             ["url"]=> string(23) "home/termsandconditions" 
             ["label"]=> string(20) "Terms and Conditions" 
             ["authenticatedOnly"]=> string(5) "false" 
        } 
        [1]=> array(5) 
        { 
             ["id"]=> string(14) "privacy-policy" 
             ["title"]=> string(14) "Privacy Policy" 
             ["url"]=> string(18) "home/privacypolicy" 
             ["label"]=> string(14) "Privacy Policy" 
             ["authenticatedOnly"]=> string(5) "false" 
         } 
    } 
} 

请问有人能帮我弄清楚为什么循环语句不能解析 $this->footerList->items


请展示更多的代码,var_dump($this->footerList->items);输出了什么? - xdazz
请确保您在foreach循环的相同作用域内调用了var_dump - Alvin Wong
2个回答

3

应该是这样的

foreach ($this->footerList["items"] as $item)

如果 $this->footerListobject(FooterModel),为什么你需要这样做? - Alvin Wong
$this->footerList 是一个数组,而不是一个对象,因此出现了“非对象”的错误。 - Waleed Khan
1
如果$this->footerList是一个数组,那么var_dump($this->footerList)将会输出array(1){...}而不是object(FooterModel) - Alvin Wong
它是一个具有items数组属性的对象,一个简单示例可以为您展示。 - nickb

0

当你尝试在类外使用$this,或者在静态方法中引用数组作为对象时,通常会出现这种情况。

您需要提供更多的代码以获得更清晰的答案。

更新

我已经格式化了您的输出。

foreach ( (object) $this->footerList->items as $item)

以上代码将把所有的子数组转换为对象,以便您按照计划使用您的代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接