如何从数组中检索信息

时间:2015-08-08 14:21:36

标签: php codeigniter

您好我是codeigniter框架的初学者,我无法理解如何从方法返回的数组中检索信息。

在我的索引页面上我有登录表单,当用户插入用户名和密码并点击提交按钮时,他调用控制器的方法登录,其任务是从表单中收集用户名和密码并将数据传递给模型方法"登录($ username,$ password)"然后models方法返回true或false,具体取决于我们是否在数据库中有有效用户,然后控制器的方法要么进一步传递用户,要么在开始时返回给他。我的问题是我想知道用户的访问级别,我在模型中创建了这个方法

public function users_level($username){

$query = $this->db->get_where('users',array('username' => $username) );

$users_level = $query->result();    // I tried with these too $users_level[] = $query->result();    

return $users_level;

}

我希望返回用户的访问级别,并使用该信息来确定为该特定用户显示的视图。

这是来自控制器的登录方法:

public function login(){
    $username = $this->input->post('username');
    $password = $this->input->post('password');

    $this->load->model('model_user');
    $logged_in = $this->model_user->login($username,$password);
    if ($logged_in == true){     
        $result['level'] = $this->model_user->users_level($username);
        $this->welcome($result);                    
    }else if ($logged_in == false){ 
        $this->index();
    }
}

这是我的欢迎页面。

<?php
echo "<br/><br/> WELCOME <br/><br/>";

//echo "Users level is : " . $user_level['level'];      //this is problem

?>
<?php  
      print_r($user_level); 

?>

现在我不知道如何从该阵列中提取信息。 当我做的时候

print_r($user_level); 

看看输出是什么,我得到了结果:

欢迎

Array ( [level] => Array ( [0] => stdClass Object ( [id] => 13 [username] => john_username [password] => 123 [name] => john [surname] => johnson [phone] => 123456 [email] => john@gmail.com [level] => 2 [user_type] => professor [activated] => 1 [is_admin] => 0 [is_professor] => 1 [desk] => [academic_year] => 0 [average_grade] => 0 ) ) )

如果我尝试做这样的事情:

echo "Users level is : " . $user_level['level'];

或:

echo "Users level is : " . $user_level->level;
发生

错误:

A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: views/view_welcome_page.php

我知道这不是一个对象,但我不知道如何从我的表中的列级检索信息? 提前谢谢

2 个答案:

答案 0 :(得分:0)

如果你想要数组(单行),那么编辑这样的模型:

using System;

表示多行:

$users_level = $query->row_array();
return $users_level;

答案 1 :(得分:0)

edit your code in function as
$users_level = $query->result_array(); 

then u will get info like   

$userlevels = Array ( "level" => Array ( "0" => array ( "id" => '13' ) ) );
echo "Users level is : " . $userlevels['level'][0]['id'];