如何在CodeIgniter控制器中向数组添加键?

时间:2016-10-11 09:22:30

标签: php codeigniter

我正在为用户创建简单的个人资料页面(用户主页,而不是其他人看到访问权限)。我的控制器:

<?php
class Profile extends CI_Controller {

    public function __construct()
        {
                parent::__construct();
                $this->load->model('Profile_model');
                $this->load->database();
                if (!$this->tank_auth->is_logged_in()) 
                    redirect('auth/login');
        }

        public function index()
        {
                $user_id = $this->tank_auth->get_user_id();

                $data = $this->Profile_model->getUserAccountInfoById($user_id);
                $data[] = $this->Profile_model->getUserProfileInfoById($user_id);

                $this->load->view('profile/profile', $data);
        }
}

我的模特:

<?php
class Profile_model extends CI_Model {

        public function __construct()
        {
                $this->load->database();

        }

        public function getUserAccountInfoById($user_id)
        {
                $query = $this->db->get_where('user_accounts', array('id' => $user_id));
                return $query->row_array();
        }
        public function getUserProfileInfoById($user_id)
        {
                $query = $this->db->get_where('user_profiles', array('user_id' => $user_id));
                return $query->row_array();
        }
}

并查看文件:

<h2><?php echo $username; ?></h2>
<h2><?php echo $longitude; ?></h2>
<h2><?php echo $latitude; ?></h2>

问题来自于我在user_accounts表中有用户名但在user_profiles表中有经度/纬度。如果我单独使用模型方法,那么一切都很好,所以在模型内部一切正常。但是当我尝试从两个表传递给我的视图数据时,我得到错误:

Undefined variable: longitude

我的问题是关于向$ data数组添加键/值。我试图谷歌和我发现我必须添加[]但它仍然无法工作(相同的错误)。

1 个答案:

答案 0 :(得分:0)

使用array_merge来填充2个数组。您正在创建一个嵌套数组。var_dump($data)将显示数组的内容。

$data是一个数组。当你创建$data[]=...时,你正在将另一个数组推送到data数组。所以第二个数组现在是一个嵌套数组。longitude现在是不在数组的第一级。它在第二级(嵌套)。

$data1 = $this->Profile_model->getUserAccountInfoById($user_id);
$data2 = $this->Profile_model->getUserProfileInfoById($user_id);
$data = array_merge($data1 , $data2 );
$this->load->view('profile/profile', $data);

或者你可以根据需要访问嵌套数组。首先打印内容然后很容易决定如何访问嵌套数组