兼容的無限級菜單代碼 php

$config = array(
//     array('id'=>'1000','name'=>'個性化設置','url'=>'admin/custom/index'),
    array('id' => '1001', 'name' => '菜單設置', 'url' => 'admin/menu/index'),
    array('id' => '1002', 'name' => '關鍵詞設置', 'url' => 'admin/word/index'),
    array('id' => '1003', 'name' => '報告設置', 'url' => 'admin/report/index'),
    array('id' => '1004', 'name' => '預警設置', 'url' => 'admin/warning/index'),
    array('id' => '1005', 'name' => '角色管理', 'url' => 'admin/role/index'),
//    array('id'=>'1033','name'=>'站點設置','url'=>'admin/site/index'),
    array('id' => '1006', 'name' => '用戶管理', 'url' => 'admin/user/index'),
    array('id' => '1007', 'name' => '修改資料', 'url' => 'admin/base_info/edit'),
    array('id' => '1008', 'name' => '操作日誌', 'url' => 'admin/client_logs/index'),
    array('id' => '1009', 'name' => '任務中心', 'url' => 'admin/schedule/index'),
    array('id' => '1010', 'name' => 'OEM設置', 'url' => 'admin/custom/web', 'parent_id' => 1000),
    array('id' => '1011', 'name' => '郵件Smtp設置', 'url' => 'admin/custom/smtp', 'parent_id' => 1000),
    array('id' => '1012', 'name' => '預警號碼設置', 'url' => 'admin/custom/warn_number', 'parent_id' => 1000),
    array('id' => '1013', 'name' => '菜單列表', 'url' => 'admin/menu/menu_list', 'parent_id' => 1001),
    array('id' => '1014', 'name' => '添加/修改', 'url' => 'admin/menu/menu_add', 'parent_id' => 1001),
    array('id' => '1015', 'name' => '模塊管理', 'url' => 'admin/menu/box_list', 'parent_id' => 1001),
    array('id' => '1016', 'name' => '模塊添加/修改', 'url' => 'admin/menu/box_add', 'parent_id' => 1001),
    array('id' => '1017', 'name' => '關鍵詞類別設置', 'url' => 'admin/word_category/index', 'parent_id' => 1002),
    array('id' => '1018', 'name' => '主題詞設置', 'url' => 'admin/word/index', 'parent_id' => 1002),
    array('id' => '1019', 'name' => '標籤設置', 'url' => 'admin/word/tags', 'parent_id' => 1002),
    array('id' => '1020', 'name' => '詞表設置', 'url' => 'admin/word/wordsets', 'parent_id' => 1002),
    array('id' => '1021', 'name' => '添加詞表', 'url' => 'admin/word/addwordsets', 'parent_id' => 1002),

);

$newConfig = [];
foreach( $config as $key=>$val ){
   if(!array_key_exists('parent_id', $val)){
      $config[$key]['parent_id'] = 0;
   }
}

$newConfig = list_to_tree($config);
foreach( $newConfig as $key=>$val ){
   unset($newConfig[$key]['parent_id']);
}
function list_to_tree($list, $pk='id',$pid = 'parent_id',$child = '_child',$root=0) {
    // 創建Tree
    $tree = array();
    if(is_array($list)) {
        // 創建基於主鍵的數組引用
        $refer = array();
        foreach ($list as $key => $data) {
            $refer[$data[$pk]] =& $list[$key];
        }
        foreach ($list as $key => $data) {
            // 判斷是否存在parent
            $parentId = $data[$pid];
            if ($root == $parentId) {
                $tree[] =& $list[$key];
            }else{
                if (isset($refer[$parentId])) {
                    $parent =& $refer[$parentId];
                    $parent[$child][] =& $list[$key];
                }
            }
        }
    }
    return $tree;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章