检查作为另一个数组值存在的数组键

时间:2012-12-14 19:29:17

标签: php arrays multidimensional-array foreach associative-array

我有一个名为$menu_array的数组;目前看起来像这样

   [0] => Array
    (
        [id_parent_menu] => 4
        [parent_info] => test
        [children_menu] => Array
            (
                [0] => Array
                    (
                        [id_child_menu] => 21
                        [children_info] => test
                    )

                [1] => Array
                    (
                        [id_child_menu] => 22
                        [children_info] => test2.
                    )

            )

    )

等等。

我还有另一个数组$access,如下所示:

     array(
          [4]='true'
          [22]='true'
     ) 

我要做的是检查$access数组的密钥是否作为id_parent_menu存在,然后输入密钥和值

$menu_array[can_view]='true';

然后,如果$children_menu密钥作为$menu_array存在并且设置值$access,还要检查id_child_menu内的can_view = true数组内是否存在在那里。

$menu_array['children_menu'][1]['can_view']='true';

1 个答案:

答案 0 :(得分:1)

foreach ($menu_array as $key => $value){
  if(isset($access[$value['id_parent_menu']]) && $access[$value['id_parent_menu']])
  {
    $menu_array[$key]['can_view']=true;

    foreach($value['children_menu']  as $key2 => $value2)
      if(isset($access[$value2['id_child_menu']]) && $access[$value2['id_child_menu']])
         $menu_array[$key]['children_menu'][$key2]['can_view']=true;
  }

}

(仅当父项可见时,子项才可见。)