【问题标题】:How to assign a role to a user PHP如何为用户分配角色 PHP
【发布时间】:2014-04-07 12:02:22
【问题描述】:

好吧,我有这个添加用户管理员的表单。我已授予用户添加另一个用户但不添加管理员左右的权限!

$roles = db_fetch_all("role") ; 
$TabRoles = array(''=>'-- Choose --');
foreach($roles as $value)
{
    $TabRoles[$value['rid']] = $value['name'];
} 

并使用print_array($TabRoles); 显示我:

Array
(
    [] => -- Choose --
    [admin] => Admin
    [seo] => SEO
    [user] => User
)

条件是 if (user('rid') == 'admin'|'seo') 。我试过这个:

foreach($roles as $value)
{
if (user('rid') == 'admin'|'seo')
    {
        $TabRoles[$value['rid']] = $value['name'];
    }else{

        $TabRoles[$value['rid']] = $value['name'][2];
    }
}

但它显示了数组的位置“2”!

Array
(
    [] => -- Choose --
    [admin] => m
    [seo] => O
    [user] => e
)

我希望它像这样显示:

Array
(
    [] => -- Choose --
    [user] => User
)

有什么解决办法吗?非常感谢!

解决方案:感谢@DanFromGermany:

foreach($roles as $value)
{
if (user('rid') == 'admin' || user('rid') == 'seo')
    {
        $TabRoles[$value['rid']] = $value['name'];
    }elseif (user('rid') == $value['rid']){
 $TabRoles[$value['rid']] = $value['name'];
    }
}

【问题讨论】:

    标签: php arrays role


    【解决方案1】:
    if (user('rid') == 'admin'|'seo')
    

    | 是按位运算符,但我猜你想在这里进行逻辑比较:

    if (user('rid') == 'admin' || user('rid') == 'seo')
    

    在字符串上使用数组括号的说明:

    $test = 'abcd';
    
    echo $test[0]; // prints a
    echo $test[1]; // prints b
    echo $test[2]; // prints c
    

    这就是为什么你只得到一个字母而不是你想要的元素。

    我认为您正在寻找类似的东西:

    foreach($roles as $value) {
        if (user('rid') == $value['rid'])
            $TabRoles[$value['rid']] = $value['name'];
        }
    }
    

    foreach($roles as $value) {
        $TabRoles[$value['rid']] = $value['name'];
    }
    
    if (user('rid') != 'seo' && user('rid') != 'admin')) { // inverse/negate the logic!
        unset($TabRoles['seo']);
        unset($TabRoles['admin']);
    }
    

    【讨论】:

    • 在回答之前我确实想知道,但是,为什么它不会引发错误?它不是带有“|”的字符串没有连接的符号?
    • 我如何获得价值?
    • 事实上他们都没有工作:) 这是通过融合这两个工作!非常感谢您的帮助!
    • 我很抱歉@DanFromGermany,你能指出我在哪里阅读它,我在 php.net > 运营商中查找并没有看到任何东西。
    • @Chococroc | 是一个包含(按位)或,请参阅php.net/language.operators.bitwise
    猜你喜欢
    • 2010-10-09
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2016-12-16
    • 2020-10-16
    • 2016-03-09
    • 2018-08-21
    相关资源
    最近更新 更多