【问题标题】:PHP Multidimensional Associative Array loop [duplicate]PHP多维关联数组循环[重复]
【发布时间】:2021-12-13 05:26:45
【问题描述】:

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

多维数组:

$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 并返回 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
        }
    }
}

所以基本上我想通过数组循环使用“组”作为另一个函数的输入,该函数将布尔值返回给“访问”

【问题讨论】:

    标签: php arrays multidimensional-array associative-array


    【解决方案1】:

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

    你只需要一个循环;

    此外,由于您使用的是函数,因此任何更改的范围都将限于该函数,因此您应该从该函数返回 $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);
    

    【讨论】:

    • 非常感谢。没有足够的代表来投票。 :)
    猜你喜欢
    • 1970-01-01
    • 2015-11-09
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 2019-07-17
    • 2012-05-13
    相关资源
    最近更新 更多