PHP多维关联数组循环



我有一个多维关联数组。我需要循环遍历数组,并将一个值放入另一个函数,该函数返回一个布尔值,该布尔值将是数组中另一个成员的值。见下文.

多维数组:
$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并返回真或假的函数。我尝试了嵌套循环,但访问值没有改变。但是,如果我单独运行它们,它会像预期的那样工作。

这个可以工作(但是必须为数组中的每个项做):

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'作为另一个函数的输入返回一个布尔值给'access'

第一个foreach()遍历数组的顶层,然后第二个foreach()遍历第二层。每一层包含"组";和"access".

你只需要一个循环;

另外,因为你使用的是一个函数,任何更改的范围都将局限于函数,所以你应该从函数返回$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);

最新更新