2012-06-01 35 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";} 

这只是一种与你一起工作的方式,是获得你想要的结果的代码。