[英]php convert stdClass object to array
任何人都可以解释为什么我可以让这个工作。
我想查询一个数组,看看当前登录的USER->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;
}
我目前得到这个输出:
您无权访问此数据库。
5410
Array([7] => stdClass Object([userid] => 7)[9] => stdClass对象([userid] => 9)[27] => stdClass对象([userid] => 27)[98] => stdClass对象([userid] => 98)[203] => stdClass对象([userid] => 203)[252] => stdClass对象([userid] => 252)[5410] => stdClass对象( [userid] => 5410))
正如您所看到的,5410位于数组中,因此不应被拒绝访问。 在此先感谢您的帮助。
因为5410 != stdClass Object ( [userid] => 5410 )
如果你使用in_array()
。
由于您的数组键与userid
看起来相同,因此您只需使用isset($alloweduser[$USER->id])
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.