消息:不能将标量值用作数组

时间:2014-02-10 07:42:44

标签: php arrays codeigniter

在Codeigniter中,我创建了一些帮助程序,通过允许将组名称作为字符串或多个组的数组来检查某些组中的用户。如果我没有为$id参数传递userid,现在似乎工作正常。当我将$id设置为某个用户标识符2时,它会在

之下发出错误
Message: Cannot use a scalar value as an array

这是我的所有帮助函数而不是用法。

获取用户的群组

if ( !function_exists('get_user_group') )
{
    function get_user_group($id = FALSE)
    {
    $CI =& get_instance();

    // getting user groups by id or logged in
    $object = $CI->ion_auth->get_users_groups($id)->result();

    foreach($object as $group):
        $id[] = $group->id;
        $groups[] = $group->name;
    endforeach;
    $groups = array_combine($id, $groups);

    return $groups;

    }
}

检查组中的用户是否

if ( !function_exists('in_group') )
{
    function in_group($groups, $id = FALSE)
    {
    if(is_array($groups)){

        foreach($groups as $group){
        //print_r($group);
        if(in_array($group, get_user_group($id))){
            return TRUE;
        }
        }

    } elseif(is_string($group)) {
        if(in_array($group, get_user_group($id))){
        return TRUE;
        }
    }
    }
}

用法

if(in_group(array('hr'), 2)){
    echo '<h1>IS IN THIS GROUP</h1>';
} else {
    echo '<h1>IS NOT IN THIS GROUP</h1>';
}

1 个答案:

答案 0 :(得分:0)

根据@kumar_v评论,我修改了`get_user_group()帮助,如下所示,解决了问题。

if ( !function_exists('get_user_group') )
{
    function get_user_group($uid = FALSE)
    {
    $CI =& get_instance();

    // getting user groups by id or logged in
    $object = $CI->ion_auth->get_users_groups($uid)->result();

    foreach($object as $group):
        $id[] = $group->id;
        $groups[] = $group->name;
    endforeach;
    $groups = array_combine($id, $groups);

    return $groups;

    }
}

希望这可能对其他人有所帮助