我有一个如下所示的数组:
{"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"
}
}
答案 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";
}
由于