php将stdClass对象转换为数组

时间:2011-09-01 13:37:04

标签: php arrays object stdclass

任何人都可以解释为什么我能让这个工作 我想查询一个数组,看看当前登录的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

     

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

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

1 个答案:

答案 0 :(得分:3)

如果您使用5410 != stdClass Object ( [userid] => 5410 ),则in_array()

由于您的数组键与userid看起来相同,因此您只需使用isset($alloweduser[$USER->id])