在codeigniter中访问结果数组

时间:2013-04-12 09:52:41

标签: codeigniter codeigniter-2

我的模型中发生了以下情况:

public function load_user_menu($username)
    {
        $this->db->select('*');
        $this->db->from('menu');
        $this->db->where('username', $username);
        $query = $this->db->get();
        return $query->result();
    }

以及我的控制器中的以下内容:

public function index()
    {     
        /*If user previously logged in and not logged out, username remains in session.
            load username and load profile data. 
        */
        //check if user logged in or not
        if(($this->session->userdata('username')!=""))
        {
            //load data from model
            $profile = array();
            $username = $this->session->userdata('username');
            $result = $this->profileModel->user_profile($username);
             foreach($result as &$value)
              {
                  $profile['userdetails'] = $value;
              }
            $this->load->view('profile', $profile);
        }else{
            //redirect to login function
            $this->login();
        }
    }

但我在个人资料视图中遇到错误。我确信我访问它们是错误的,因为我在视图中这样做:

<? echo $userdetails['profilepic']; ?>

并且没有显示但是此错误:

  

遇到PHP错误

     

严重性:注意

     

消息:尝试获取非对象的属性

     

文件名:controllers / profile.php

     

行号:60

这是肯定的,因为访问错误。如何根据上述内容访问详细信息?

4 个答案:

答案 0 :(得分:3)

假设你在用户详细信息中有profilepic并且看到你试图获得非对象属性的错误,这意味着

 <? echo $userdetails['profilepic']; ?>

应该是

 <? echo $userdetails->profilepic; ?>

因为你把结果作为对象而不是数组

return $query->result();

或者您将其更改为

return $query->result_array();

答案 1 :(得分:1)

$query->result();生成一个对象; $query->result_array();为您提供了一个数组

要么很好,要么根据你的需要

答案 2 :(得分:0)

只需在您的视图页面上尝试此操作

<? echo $profilepic; ?>

答案 3 :(得分:0)

- 您的控制器中不需要foreach循环

$result = $this->profileModel->user_profile($username);
             foreach($result as &$value)
              {
                  $profile['userdetails'] = $value;
              }

- 试试这个。

$profile['userdetails'] = $this->profileModel->user_profile($username);

- 在View中进行访问,将其用作

echo $userdetails->profilepic;