/** * 页面层级展示处理 * @param $data * @param int $pid * @param int $level * @param string $html * @return array */ public static function getTree($data, $pid = 0, $level = 0, $html = '--') { //最终权限数组 static $result = []; //1,2,3,4 //处理数组为空,直接返回result if (empty($data)) { return $result; } foreach ($data as $item) { if ($item['pid'] == $pid) { $item['html'] = str_repeat($html, $level); // -- ---- --------- $item['level'] = $level + 1; $result[] = $item;//1,2,3,4,5,6 self::getTree($data, $item['id'], $item['level']); } } return $result; }
/** * 数据多层级 * @param array $data * @param int $pid * @return array */ public function subTree(array $data, int $pid = 0) { // 返回的结果 $arr = []; foreach ($data as $val) { // 给定的PID是当前记录的上级ID if ($pid == $val['pid']) { // 递归 $val['sub'] = $this->subTree($data,$val['id']); $arr[] = $val; } } return $arr; }
/** * 获取层级的数据 * @param $allow_node 用户有的权限 * @return array */ public function treeData($allow_node) { $query = Node::where('is_menu', '1'); if (is_array($allow_node)) { $query->whereIn('id', array_keys($allow_node)); } $menuData = $query->get()->toArray(); return $this->subTree($menuData); }
//上面有备注自己看里面的数据只是参考如有需要自行改动