2017-04-15 51 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'] –