循环遍历results_array()会产生错误:尝试获取非对象的属性

时间:2013-01-27 15:27:53

标签: php codeigniter

我有一个ci / bonfire应用程序。我正在尝试循环查询结果。但是,我的视图中循环记录及其各个字段的逻辑失败,并显示我正在尝试获取非对象属性的消息。 我已经确定在我的模型中,如果我有东西可以返回,我只返回数据......就像这样:

       if ($query->num_rows() > 0) 
        { 
            return $query->result_array(); //returns an object of data
        }

在视图中,我还添加了以下调试语句来证明我正在获取数据:

  print_r($records);

这给了我以下输出:(我只包括一个简短的子集..)

Array ( [0] => Array ( [category_id] => 59 [name] => procs [description] => [parent_id] => 4 [deleted] => 0 [created_on] => 2012-09-28 00:00:00 [modified_on] => 0000-00-00 00:00:00 ) [1] => Array ( [category_id] => 62 [name] => test [description] => [parent_id] => 4 [deleted] => 0 [created_on] => 2012-09-28 00:00:00 [modified_on] => 0000-00-00 00:00:00 ) 

最后,这是我用来循环$记录的逻辑(再次,只是子集):

  <?php foreach ($records as $record) : ?>
   <tr>
    <td><input type="checkbox" name="checked[]" value="<?php echo $record->category_id ?>" /></td>

$record->category_id

的电话正在消亡

编辑1

我的控制器篝火创建的index()方法从同一个表中返回所有记录,在视图中成功使用语法$record->category_id。我知道我可以使用$record['category_id'],但我想知道为什么我不能让它以其他方式工作。

任何建议将不胜感激。感谢。

2 个答案:

答案 0 :(得分:2)

使用

$record['category_id ']

应该做的伎俩, Wezy

答案 1 :(得分:1)

我认为你没有得到一个对象(否则print_r会有所不同)。 也就是说,'foreach'方法用于数组遍历,而不是对象,即使一个对象被提供给'foreach'循环,它也被转换为等效的关联数组,因此,在你的情况下'$ record'不再是一个对象,但是一个关联数组。