PHP检查字符串是否在数组中

时间:2017-01-06 11:28:24

标签: php arrays json

我有一个如下所示的数组:

{"permissions":["1","2"]}

我尝试使用以下函数检查给定字符串是否在权限数组中

function hasPermission($permission) {
            return in_array($permission, array_column($this->permissions, 'permissions'));
}

调用函数时,给它字符串" 1"它返回false,即使1位于权限数组

任何帮助将不胜感激

由于

修改

这是转换后数组的var Dump

array(1) { 
    ["permissions"]=> 
array(2) {[0]=> string(1) "1" 
          [1]=> string(1) "2" 
        } 
} 

3 个答案:

答案 0 :(得分:1)

试试这个......

<?php
$json = '{"permissions":["1","2"]}';
$arr = json_decode($json,true);
print_r($arr);
echo in_array(1,$arr['permissions']); // returns 1 if exists
?>

所以你的功能必须是这样的......

function hasPermission($permission) {
            return in_array($permission, $this->permissions['permissions']);
}

答案 1 :(得分:0)

array_column不支持1D数组,如果是这样,它返回一个空数组。

您的$ permissions数组是1D,因此只需使用$this->permissions['permission']即可访问它。

return in_array($permission, $this->permissions['permissions']);

示例:

$array =  ['permissions' => ['1', '2']];
echo (int)in_array('1', array_column($array, 'permissions')); // 0
echo (int)in_array('1', $array['permissions']); // 1

答案 2 :(得分:0)

试试这个会起作用。

$permission = json_decode('{"permissions":["1","2"]}',true);
echo "<pre>";print_r($permission);
if(is_array($permission)){
 echo "this is an array";
}else{
  echo "Not an array";
}

由于