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()
代码>