2012-06-01 61 views
0

我試圖顯示菜單並根據使用Codeigniter的數據庫值向我的用戶授予用戶權限。但它不工作,可能是問題在視圖文件中。我有下面的表格。在PHP中使用in_array()

表名:module_permission

id user_id delete  add edit 
    1  1  0   1  1 

我的控制器:

$this->load->model('mod_module_permission'); 
$data['permit']= $this->mod_module_permission->permission($user_id); 

我的模型:

$this->db->select('*'); 
    $this->db->from('module_permission'); 
    $this->db->where('user_id', $user_id);           
    $getData = $this->db->get(''); 
    if($getData->num_rows() > 0) 
    return $getData->result_array(); 
    else 
return null; 

筆者認爲:

if (in_array(add=>'1',$permit)) {echo "YES";} else {echo "NO";} 

您能否告訴我視圖文件中的哪些更改可以解決問題?

謝謝:)

+0

如果'add =>'1''應該是一個數組,請使用'array(add =>'1')' – dpk2442

+0

1.閱讀[in_array()](http:// php。淨/ in_array)。 2.我不認爲你想in_array(),我想你想說'if(isset($ permit ['add'])&& $ permit ['add'] == 1){...} – nachito

回答

2

顯然,這個問題是in_array()函數的用法

檢查in_array()手冊:

bool in_array (mixed $needle , array $haystack [, bool $strict = FALSE ]) 

,第一個參數是字符串或什麼的,第二個參數是正在搜索的數組。

此外,在第一參數你錯誤地試圖定義的陣列,所述陣列結構塊應該是類似於:

array('key'=> 'value') 

(字符串是在冒號)

試試:

echo $tmp = ($permit == '1') ? "YES" : "NO"; 

$arr = array('key'=>'1'); 
echo $tmp = (in_array($permit, $arr)) ? "YES" : "NO"; 
1

您錯誤地使用了in_array()。這是in_array($needle, $haystack)其中$needle是某種類型的單個變量。你應該嘗試in_array('1', $permit)(如果$permit實際上是一個數組)。

上述答案僅適用於in_array()適合您的問題的解決方案。

0

我想你可以用下面的方法:

<?php foreach ($permit as $rows){ 
    if ($rows['add']==1) {echo "YES";} else {echo "NO";} 
} ?>     
0

看着你的問題。看來你不確定result_array()返回的是什麼。在你的情況下,它會返回以下內容:

array (
    array (
     "id" => 1, 
     "user_id" => 1, 
     "delete" => 1, 
     "add" => 1, 
     "edit" => 1 
    ) 
) 

所以,當你試圖做一個in_array()你正在尋找最外層數組和你的if語句將永遠不會通過。但是,對於您的問題簡單的解決方法是改變你型號和更新該行:

return $getData->result_array(); 

return $getData->result_array()->row(); 

然後在你視野改變這一行:

if (in_array(add=>'1',$permit)) {echo "YES";} else {echo "NO";} 

if ($permit->add == 1) {echo "YES";} else {echo "NO";} 

這只是一種與你一起工作的方式,是獲得你想要的結果的代碼。