在PHP中使用in_array()
我正在尝试使用Codeigniter根据数据库值显示菜单并授予用户权限。但它不工作,可能是视图文件中存在问题。我有下表 表名称:模块权限在PHP中使用in_array(),php,codeigniter,Php,Codeigniter,我正在尝试使用Codeigniter根据数据库值显示菜单并授予用户权限。但它不工作,可能是视图文件中存在问题。我有下表 表名称:模块权限 id user_id delete add edit 1 1 0 1 1 我的控制器: $this->load->model('mod_module_permission'); $data['permit']= $this->mod_module_perm
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";}
您能告诉我视图文件中的哪些更改可以解决此问题吗
谢谢:)显然,问题在于in_array()函数的使用 查看in_array()手册: 第一个参数应该是字符串或其他任何参数,第二个参数是正在搜索的数组 此外,在第一个参数中,您错误地试图定义数组,数组结构块应类似于:
array('key'=> 'value')
(字符串以冒号表示)
试试这个:
echo $tmp = ($permit == '1') ? "YES" : "NO";
或
显然,问题在于in_array()函数的用法 查看in_array()手册: 第一个参数应该是字符串或其他任何参数,第二个参数是正在搜索的数组 此外,在第一个参数中,您错误地试图定义数组,数组结构块应类似于:
array('key'=> 'value')
(字符串以冒号表示)
试试这个:
echo $tmp = ($permit == '1') ? "YES" : "NO";
或
您在数组()中使用的
不正确。它是数组($pinder,$haystack)中的,其中$pinder
是某种类型的单个变量。您应该在数组('1',$permit)
中尝试(如果$permit
实际上是一个数组)
当然,只有当in_array()
是您问题的适当解决方案时,上述答案才适用。您在in_array()
中使用不正确。它是数组($pinder,$haystack)
中的,其中$pinder
是某种类型的单个变量。您应该在数组('1',$permit)
中尝试(如果$permit
实际上是一个数组)
当然,只有当in_array()
是您问题的适当解决方案时,上述答案才适用。我认为您可以使用以下方法:
<?php foreach ($permit as $rows){
if ($rows['add']==1) {echo "YES";} else {echo "NO";}
} ?>
我认为您可以使用以下方法:
<?php foreach ($permit as $rows){
if ($rows['add']==1) {echo "YES";} else {echo "NO";}
} ?>
看着你的问题。似乎您不确定_array()返回的结果是什么。在您的情况下,它将返回以下内容:
array (
array (
"id" => 1,
"user_id" => 1,
"delete" => 1,
"add" => 1,
"edit" => 1
)
)
所以,当您尝试执行in_array()时,您看到的是最外层的数组,并且您知道if语句永远不会通过。但是,解决您的问题的简单方法是更改您的模型并从以下位置更新此行:
return $getData->result_array();
到
然后在您的视图中更改此行:
if ( in_array(add=>'1',$permit)) {echo "YES";} else {echo "NO";}
到
这只是处理代码以获得所需结果的一种方法。看看您的问题。似乎您不确定_array()返回的结果是什么。在您的情况下,它将返回以下内容:
array (
array (
"id" => 1,
"user_id" => 1,
"delete" => 1,
"add" => 1,
"edit" => 1
)
)
所以,当您尝试执行in_array()时,您看到的是最外层的数组,并且您知道if语句永远不会通过。但是,解决您的问题的简单方法是更改您的模型并从以下位置更新此行:
return $getData->result_array();
到
然后在您的视图中更改此行:
if ( in_array(add=>'1',$permit)) {echo "YES";} else {echo "NO";}
到
这只是处理代码以获得所需结果的一种方法。如果add=>'1'
应该是一个数组,请使用array(add=>'1')
1。阅读上面的文档。2.我想你不想在数组()中,我想你应该说if(isset($permit['add'])&&$permit['add']==1){…}
如果add=>'1'
应该是一个数组,使用array(add=>1')
1。阅读上面的文档。2.我想你不想在数组()中,我想你应该说if(isset($permit['add'])&&$permit['add']==1){…}