php 将 stdClass 对象转换为数组

标签 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;
}

我目前得到这个输出:

You do not have permission to acces this database.

5410

Array ( [7] => stdClass Object ( [userid] => 7 ) [9] => stdClass Object ( [userid] => 9 ) [27] => stdClass Object ( [userid] => 27 ) [98] => stdClass Object ( [userid] => 98 ) [203] => stdClass Object ( [userid] => 203 ) [252] => stdClass Object ( [userid] => 252 ) [5410] => stdClass Object ( [userid] => 5410 ) )

如您所见,5410 在数组中,因此不应拒绝访问。 在此先感谢您的帮助。

最佳答案

因为 5410 != stdClass Object ( [userid] => 5410 ) 如果你使用 in_array()

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

关于php 将 stdClass 对象转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7271121/

相关文章:

Php 电子邮件表单请求信息

object - Tensorflow 对象检测纵横比是高/宽还是宽/高?

java - 在java中对两个图像进行动画处理

php - "Unknown column ' geir ' in ' 字段列表 '"

php - EventSource 的响应具有 MIME 类型 ("application/x-httpd-php") 而不是 "text/event-stream"。中止连接

php - Laravel - 选择多对多关系的特定列

c++ - 对齐数据类型 Eigen::Matrix 的数组或 vector 声明

javascript:带孔数组上的循环函数

c# - 矩阵元素求和 C#

java - 移植包括状态的 Java 对象(经过训练的 LIBSVM)