Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.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将stdClass对象转换为数组_Php_Arrays_Object_Stdclass - Fatal编程技术网

php将stdClass对象转换为数组

php将stdClass对象转换为数组,php,arrays,object,stdclass,Php,Arrays,Object,Stdclass,有谁能解释一下我为什么能让它工作。 我想查询一个数组,查看当前登录的用户->id是否分配了特定角色: $contextroles = get_records_sql("SELECT userid FROM {$CFG->prefix}role_assignments WHERE contextid = 23 AND roleid = 3"); function object2array($object) { if (is_object($object)) { fo

有谁能解释一下我为什么能让它工作。
我想查询一个数组,查看当前登录的
用户->id
是否分配了特定角色:

$contextroles = get_records_sql("SELECT userid FROM {$CFG->prefix}role_assignments WHERE contextid = 23 AND roleid = 3");

function object2array($object) {
    if (is_object($object)) {
        foreach ($object as $key => $value) {
            $array[$key] = $value;
        }
    }
    else {
        $array = $object;
    }
    return $array;
}

$alloweduser = object2array($contextroles);

if (in_array($USER->id, $alloweduser)) {
    echo'Your in<br />';
    echo $USER->id.'<br />';
    print_r($alloweduser);
}
else{
    echo'<br />You do not have permission to acces this database.<br />';
    echo $USER->id.'<br />';
    print_r($alloweduser);
    exit;
}
$contextroles=get_records_sql(“从{$CFG->prefix}role_分配中选择userid,其中contextid=23,roleid=3”);
函数object2array($object){
if(is_object($object)){
foreach($key=>$value的对象){
$array[$key]=$value;
}
}
否则{
$array=$object;
}
返回$array;
}
$alloweduser=object2array($contextroles);
if(在数组中($USER->id,$alloweduser)){
回音“你的声音在
”; echo$USER->id.
; 打印(允许用户); } 否则{ echo“
您没有访问此数据库的权限。
”; echo$USER->id.
; 打印(允许用户); 出口 }
我目前正在获取此输出:

您没有访问此数据库的权限

5410

数组([7]=>stdClass对象([userid]=>7)[9]=>stdClass对象([userid]=>9)[27]=>stdClass对象([userid]=>27)[98]=>stdClass对象([userid]=>98)[203]=>stdClass对象([userid]=>203)[252 252 stdClass对象([userid]=>252 5410]=>stdClass对象([userid]=>5410))

如您所见,5410位于阵列中,因此不应被拒绝访问。
提前感谢您的帮助。

因为
5410!=stdClass对象([userid]=>5410)
如果在数组()中使用


由于您的数组键与
userid
类似,因此您只需使用
isset($alloweduser[$USER->id])

此变量/对象
$USER,$CFG
来自何处?必须将其转换为数组的对象有什么问题?您的
object2array()
函数是冗余的。将对象强制转换为
(数组)
具有相同的效果。您并不是说
get\u records\u sql()
做了什么。也许你可以修改它,让它返回一个数组?什么是
$USER->id
?此外,我不确定是否可以对对象执行
foreach
。另外,“5410”不在数组中,而是另一个
stdObject
,它保存用户id“5410”。这是一个区别。也删除了函数:您的object2array()函数是冗余的。将对象强制转换为(数组)具有相同的效果里克范威尔2@Codded使用
array\u key\u exists($USER->id,$alloweduser)代替
isset()