2017-04-15 76 views
-1

任何人都可以通过以下代码片段来帮助我存档检查角色。我想获得的是能够根据分配的角色对用户进行身份验证。
in_array()不适用于返回数组。 返回的阵列是:使用codeigniter从db中检查in_array

array (size=2) 0 => object(stdClass)[40] public 'role' => string '2' (length=1) 1 => object(stdClass)[41] public 'role' => string '5' (length=1) 

我很感谢任何帮助。由于

DB TABLE 
id user_id role 
1 4  2 
2 4  5 

型号

//get logged user roles 
public function user_roles($id){ 
    $userDB = $this->quickDB(); 
    $userdata = $userDB->query("SELECT role 
          FROM role_assignment 
          WHERE user_id = $id 
          ")->result(); 
    $userDB->close(); 
    return ($userdata); 
} 

控制器:

public function user_roles() 
{ 
    $roles=$this->Master_model->user_roles('4'); 

    if (in_array("1", $roles)) 
    { 
     echo "Admin<br>"; 
    } 
    if (in_array("2", $roles)) 
    { 
     echo "Teacher<br>"; 
    } 
    if (in_array("5", $roles)) 
    { 
     echo "Academic<br>"; 
    } 
} 
+0

你的问题是什么?你有什么问题? – shaggy

回答

0

in_array在你的代码不能正常工作。您需要进行两项更改。

首先 - 改变你的DB输出数组,你现在越来越objetct:

$userdata = $userDB->query("SELECT role 
         FROM role_assignment 
         WHERE user_id = $id 
         ")->result_array(); 

二 - itterate通过DB结果,并返回修改后的数组:

$user_roles = array(); 
foreach ($userdata as $val) { 
    $user_roles[] = $val['role']; 
} 
return $user_roles; 

这两个变化都在里面user_roles功能在你的模型中。

+0

谢谢;但在哪里放置第二个代码?如果它返回$ user_roles foreach的用途是什么? –

+0

非常感谢。这是工作。 –

+0

但我将$ value ['role']更改为$ val ['role'] –