Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中使用in_array()_Php_Codeigniter - Fatal编程技术网

在PHP中使用in_array()

在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

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

表名称:模块权限

   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){…}