PHP:试图在两个单独的字符串数组中找到一个共同的匹配文本.主旨:为论坛创建用户组


PHP: Trying to find a common matching text inside two separate string arrays. Main Idea: Making usergroups for a forum

这个简短的描述是我已经创建了我自己的论坛。一切都很棒,我自己也对它印象深刻,因为我只学习了6个月的PHP。但是,我正在尝试使用户组正常工作。现在,我可以将一个用户组分配到一个论坛类别,这一切都很好。但是,我只能在论坛中添加一个组。如果我尝试添加更多的组,这就是我的代码出现问题的地方。

首先,让我给你我使用的工作代码:
function checkgroupstat($group, $user) {
$findme = $group . ":";
$filestring = get_user_data($user, "groups");
$pos = strpos($filestring, $findme);
if ($pos === false) {
return "false";
} else {
return "true";
}
}

正如您所知道的,get_user_data()函数将返回用户所属的一组。例如,它将返回5:1;6:1;7:1等…重要的部分是冒号前的数字和冒号本身,例如:5:,而不是5:1。一个代表用户拥有的特权,是另一个编码页面的一部分,所以它在这里不重要。

"groups"字符串将返回分配给论坛的组。上面的代码可以完美地工作。如果返回true,则论坛将可见,否则返回false。

然而,我试图使它可以有多个组分配到论坛,我使用了这段代码,这并不像预期的那样工作:

function checkgroupstat($group, $user) {
$groups = explode(',', $group);
$filestring = get_user_data($user, "groups");
for ($i = 0; $i < count($groups); ++$i) {
$findme = $groups[$i] . ":";
$pos = strpos($filestring, $findme);
if ($pos === false) {
$false = "true";
}
else {
$truth = "true";
}
}
if ($truth == "true") {
return "true";
}
if ($truth == "") {
return "false";
}
}

我甚至尝试使用for每个循环与break;

有什么建议吗?


编辑:

下面的建议不起作用。请看我的最新回复:传递给checkgroupstat的参数是:("1,2,3",6)。get_user_data()返回的结果是5:1;6:1;7:1;8:1;。顺便说一句,这两种方法都不适合我。

您正在尝试以下操作吗?;)

function checkgroupstat($group, $user) {
    $groups = explode(',', $group);
    $filestring = get_user_data($user, "groups");
    // iterate over the group array 
    // return true if a group has matched
    for ($i = 0; $i < count($groups); $i++) {
        $findme = $groups[$i] . ":";
        $pos = strpos($filestring, $findme);
        if ($pos !== false) {
            return "true";
        }
    }
    // if no group has matched in the loop above
    // we'll have to return false
    return "false";
}

唔唔....请给我checkgroupstat()传递的参数,以及get_user_data()返回字符串。我会写正确的代码。

从现在起我只写:

function checkgroupstat($group, $user) {
$aUserGroups = get_user_data($user, "groups");
$aGroups = explode(',',$aUserGroups);
foreach($aGroups as $sGroup) {
    list($iGroup,$iSomething) = explode(':',$sGroup);
    if($group==$iGroup) {
        return true;
    }
}
return false;

}

请给我反馈,如果它工作良好:)