使用 unset 和 array_filter 过滤多维数组
class A{ /** * 多维数组过滤包含指定元素的子数组 * $menu_list 菜单列表(一个四维数组) * $mmenu 接收过滤后的菜单 * $member_limits 保存在用户表中的菜单字段 */ public function Multi_dimensional_array (){ $menu_list = $this->_getMemberMenuList();//菜单列表,包含所有菜单项 $mmenu = array(); //接收过滤后的菜单 $member_limits = $this->member_limits(); //保存在用户表中的菜单字段 // 用&对原始数据进行写操作 foreach($menu_list as &$value){ foreach($value["child"] as $k => $v){ if(!in_array($k,$member_limits)){//判断用户表中没有的字段清除元素 //清除元素 unset($value["child"][$k]); } } } // array($this,"_Filter") 相当于 $this->_Filter() $mmenu = array_filter($menu_list, array($this,"_Filter")); } /** * array_filter 数组回调函数 * 将判断为空的指定元素过滤掉 */ protected function _Filter($value){ foreach($value["child"] as $k => $v){ $result = isset($value["child"]); if($result){ return $result ; } } } }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。