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

Php 消息:不能将标量值用作数组,php,arrays,codeigniter,Php,Arrays,Codeigniter,在Codeigniter中,我创建了一些助手,通过允许将组名作为字符串或数组传递给多个组来检查特定组中的用户。现在看来,如果我不为$id参数传递userid,一切都很顺利。当我将$id设置为像2这样的用户id时,下面给出了一个错误 Message: Cannot use a scalar value as an array 下面是我的所有助手函数和用法 获取用户组 if ( !function_exists('get_user_group') ) { function get_user

在Codeigniter中,我创建了一些助手,通过允许将组名作为字符串或数组传递给多个组来检查特定组中的用户。现在看来,如果我不为
$id
参数传递userid,一切都很顺利。当我将
$id
设置为像
2
这样的用户id时,下面给出了一个错误

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 ( !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>';
}
if(在_组中(数组('hr'),2)){
echo“属于此组”;
}否则{
echo“不在此组中”;
}

根据@kumar\u v注释,我修改了“get\u user\u group()helper”,如下所示,并解决了问题

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;

    }
}

希望这对其他人有所帮助

get\u user\u group()
中,在使用前声明$id数组。但是使用不同的名称,比如$ids。因为您已经将FALSE分配给$id。@kumar_v感谢您的反馈,但您能用一些例子解释一下吗?我无法清楚地理解你的评论。谢谢……啊!让它工作起来。。。谢谢。我可以张贴答案