严重性:通知 - >试图获得非对象的属性

时间:2013-09-05 21:55:38

标签: php codeigniter for-loop codeigniter-2

我找不到解决此问题的方法:严重性:通知 - >试图获取非对象的属性

请帮我弄清楚我的错误。

我的模型方法:

  function get_AllDays_by_templateRoutine_id($rid) 
{ 
    $this->load->database(); 
    $this->db->select('day_id');
    $res =  $this->db->order_by('day_id', 'DESC')->get_where('template_user_days', array('routine_id'=> $rid));
    $ret = array();

    foreach ($res->result_array() as $row) {
        $ret[] = $row['day_id'];
    } 
    return $ret; 
}  

&安培;我的控制器

public function install_template()
{ 
      $rid = $this->input->post('rid'); 
      $userid=$this->session->userdata('userid');

        $urid=$this->routinemodel->getMaxUserRoutineId($userid);//method returning one value  

      $userdays_template=$this->templateroutinemodel->get_AllDays_by_templateRoutine_id($rid); 
       if(is_array($userdays_template)) 
        {
          foreach ($userdays_template as $row2) 
             {  
                    $day_value=$row2['day_id'];//Error:--> Trying to get property of non-object**
             }
         }    
}

                                 }  

2 个答案:

答案 0 :(得分:2)

尝试使用

$day_value = $row->day_id;

更新:

$userdays_template=$this->templateroutinemodel->get_AllDays_by_templateRoutine_id($rid); 

for($x=0;$x<count($userdays_template);$x++)
{
  for($y=0;$y<count($userdays_template[$x]);$y++)
  {
    echo $userdays_template[$x][$y]->day_id;
  }
}

我刚注意到你正在返回一个对象数组,而不仅仅是对象

foreach ($res->result_array() as $row) {
    $ret[] = $row['day_id'];
} 

如果它不起作用,你能输入你应该得到的结果吗?

答案 1 :(得分:2)

试试这个

如果你的$ userdays_template是一个对象,那么使用

 $day_value=$row2->day_id;

如果你的$ userdays_template是一个数组,那么使用

if(isset($row2['day_id'])){
 $day_value=$row2['day_id'];
}