PHP 多维关联数组循环

PHP Multidimensional Associative Array loop

我有一个多维关联数组。我需要遍历数组并通过另一个函数放置一个值,该函数 returns 一个布尔值,它将成为数组中另一个成员的值。见下文。

多维数组:

$grouparray = array(
    "428995" => array(
        "group" => "Meetings In Camera - Read",
        "access" => false
    ),
    "896325" => array(
        "group" => "Meetings In Camera - Modify",
        "access" => false
    ),
    "485563" => array(
        "group" => "Security Meetings - Modify",
        "access" => false
    ),
    "556321" => array(
        "group" => "TAC Meetings - Modify",
        "access" => false
    ),
    "658823" => array(
        "group" => "Restricted Meeting - Modify",
        "access" => false
    ),
    "985465" => array(
        "group" => "Admin Meetings - Modify",
        "access" => false
    ),
);

我有一个查询 ldap 和 returns true 或 false 的函数。 我试过嵌套 for 循环,但访问值没有改变。但是,如果我 运行 它们单独工作,它会按预期工作。

这行得通(但随后必须对数组中的每个项目执行此操作):

checkGroupMembership($ldap, $user, $grouparray[428995]['group']);

然而,这不起作用

function groupSearch($ldapconn, $user, $grouparray) {
    foreach ($grouparray as $key => $value) {
        foreach ($value as $sub_key => $sub_value) {
            $grouparray[$sub_value][access] = checkGroupMembership($ldap, $user, $grouparray[$sub_value]['group]); // this returns true or false
        }
    }
}

所以基本上我想遍历数组使用 'group' 作为另一个函数的输入,returns 一个布尔值到 'access'

您的第一个 foreach() 遍历数组的顶层,然后您的第二个 foreach() 遍历第二层。每个二级包含“组”和“访问”。

你只需要一个循环;

此外,由于您使用的是函数,因此任何更改的范围都将限于该函数,因此您应该从函数中 return $grouparray 然后检查它是否有更改。

function groupSearch($ldapconn, $user, $innergrouparray) {
    foreach ($innergrouparray as $key => $value) {
        $innergrouparray[$key]['access'] = checkGroupMembership($ldap, $user, $value['group']); // this returns true or false
    }

return $innergrouparray;
}

$newgrouparray = groupSearch($ldap, $user, $grouparray);
print_r($newgrouparray);