0

我正在尝试使用 Codeigniter 根据数据库值显示菜单并为我的用户授予用户权限。但它不起作用,可能是视图文件中的问题。我有下表。

表名: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";}

您能否告诉我视图文件中的哪些更改可以解决问题?

谢谢 :)

4

4 回答 4

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";
于 2012-06-01T15:59:55.940 回答
1

您使用in_array()不正确。它in_array($needle, $haystack)$needle某种类型的单个变量。您应该尝试in_array('1', $permit)(如果$permit实际上是一个数组)。

当然,上述答案仅适用in_array()于您的问题的适当解决方案。

于 2012-06-01T16:00:31.503 回答
0

我认为您可以使用以下方法:

 <?php foreach ($permit as $rows){ 
    if ($rows['add']==1) {echo "YES";} else {echo "NO";}
} ?>                
于 2012-06-01T17:55:43.900 回答
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";}

这只是使用您的代码获得所需结果的一种方式。

于 2012-06-01T21:20:00.587 回答