非对象的属性

时间:2011-12-05 23:50:29

标签: php codeigniter

我正在试图找出为什么我要尝试获取非对象的属性。我不熟悉对象和数组,但我正在尝试。这是代码和错误消息。关于如何解决这个问题的任何想法?

A PHP Error was encountered

Severity: Notice

Message: Trying to get property of non-object

Filename: models/sitemodel.php

Line Number: 208 and 215



function getSubMenuPages()
{
    $this->db->select('site_menu_structures.id');
    $this->db->from('site_menu_structures');
    $this->db->where('site_menu_structures.short_name', 'mainnav'); 
    $query = $this->db->get(); 
    $menu_id = $query->row()->id; 

    $this->db->select('site_menu_structures_links.id, site_menu_structures_links.short_name, is_category');
    $this->db->from('site_menu_structures_links');
    $this->db->where('site_menu_structures_links.menu_structure_id', $menu_id); 
    $query = $this->db->get();

    if ($query->num_rows() > 0) 
    {
        $linksArray = $query->result();
        foreach ($linksArray as $key => $link)
        {
            if ($link->is_category == 'Yes')
            {
                $linksArray->{$key}->child_links;
                $this->db->select('site_menu_structures_links_children.link_name');
                $this->db->from('site_menu_structures_links_children');
                $this->db->where('site_menu_structures_links_children.site_menu_structures_links_id', $link->id); 
                $query = $this->db->get();
                if ($query->num_rows() > 0) 
                {
                    $linksArray->{$key}->child_links = $query->result();
                }
            }
        }
    }

    return $linksArray;

}

2 个答案:

答案 0 :(得分:3)

我的猜测是$linksArray是一个数组,而不是一个对象,所以行

  

$ linksArray-> {$关键} - GT; child_links;

不起作用。在任何情况下,这条线什么都不做,为什么要这样做呢?

如果您为此“属性”指定了值,请尝试使用

$linksArray[$key]->child_links = $query->result();

答案 1 :(得分:0)

“试图获取非对象的属性”

只有当您尝试将变量视为对象实例并且实际上无法成功创建该实例时才会出现此类错误,如果这实际上是对象,则尝试检查这部分代码:

$linksArray->{$key}->child_links

这是代码的底部。