如何为用户PHP分配角色

时间:2014-03-05 12:19:47

标签: php arrays role

我有这个添加用户,admin的表单。我已经向用户提供了添加其他用户但不添加管理员的权利!

$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'];
    }
}

1 个答案:

答案 0 :(得分: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']);
}