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);
我有一个多维关联数组。我需要遍历数组并通过另一个函数放置一个值,该函数 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);