1. 程式人生 > >遞迴函式查詢選單列表

遞迴函式查詢選單列表

用php寫了一個查詢資料庫選單列表的遞迴方法

php程式碼如下:


    /**
     * 查詢選單列表函式
     * @return array
     */
    public function findMenuList()
    {
        // 設定資料模式
        DB::setFetchMode(\PDO::FETCH_ASSOC);
        // 構造查詢選單列表函式findList()
        function findList($id)
        {
            // 查詢選單列表
            $menus = DB::table('menu')// 選單表
            ->select('id', 'menu_name', 'menu_url', 'icon')// 查詢選單id、名稱、URL及圖示
            ->where('parent_id', '=', $id)
                ->orderBy('menu_order', 'asc')// 根據menu_order欄位升序選單
                ->get();
            return $menus;
        }
        // 查詢父選單
        $root_list = findList(0);// 選單父選單id常量,此處是0
        // 定義獲取子選單函式
        function getChild($item)
        {
            // 查詢子選單
            $child_list = findList($item['id']);
            // 遍歷子選單
        for ($i = 0, $count = count($child_list); 
        $i < $count; $i++) {
                $child_list[$i]['child_list'] = getChild($child_list[$i]);
            }
            return $child_list;
        }
        // 遍歷父選單
        for ($i = 0, $count = count($root_list); 
        $i < $count; $i++) {
            $root_list[$i]['child_list'] = getChild($root_list[$i]);
        }
        // 設定資料模式
        DB::setFetchMode(\PDO::FETCH_CLASS);
        return $root_list;
    }

相關推薦

函式查詢選單列表

用php寫了一個查詢資料庫選單列表的遞迴方法 php程式碼如下: /** * 查詢選單列表函式 * @return array */ publ

python之函式,二分查詢

遞迴函式 遞迴函式一直都是我們所覺得難理解的以一種方式,但其實,也很好理解的,遞迴函式就是自己呼叫自己。就是在重複的做同一件事情。只是有的時候,也最好不要使用遞迴函式,因為你的函式一旦呼叫,就要開闢新的記憶體空間。不利於程式的執行。python對你記憶體一個保護機制,預設只能遞迴到998

函式與二分查詢演算法

一、遞迴函式 1.遞迴呼叫的定義 遞迴呼叫是函式巢狀呼叫的一種特殊形式,函式在呼叫時,直接或間接呼叫了自身,就是遞迴呼叫 def foo(n): print(n) n += 1 foo(n) foo(1) 2.遞迴最大深度 最大遞迴深度預設是

Python基礎14_函式,二分查詢

 一. 遞迴     在函式中呼叫函式本身, 就是遞迴     prthon中遞迴的最大深度是998         def func(n)

python學習日記(二)"函式,列表"

遞迴函式 遞迴函式簡而言之就是自己呼叫自己,一開始的時候覺得很難理解,後來給別人講解的時候就突然想到了學微控制器的時候學的中斷,就突然都理解了 定義:函式直接或間接呼叫自身 優點:簡潔,理解容易 缺點:對遞迴深度有限制,消耗資源大 注意:一定要注意結束條件 x=0 def

演算法查詢指定型別檔案列表

package com.itheima_01; import java.io.File; public class Test05 { public static void main(String[] args) { //獲取檔案路徑 File file = new File("

python函式及二分法查詢

函式的遞迴: 在一個函式的內部呼叫自己 死迴圈: 可以無限迴圈,不會停止 while True: print('我不是遞迴') 遞迴: 不是死迴圈,有最大迴圈深度 def story(): print('我是遞迴') story() story() 超過了遞迴的最大深度報錯

函式、匿名函式列表推導式

遞迴函式<1>什麼是遞迴函式通過前面的學習知道一個函式可以呼叫其他函式。如果一個函式在內部不呼叫其它的函式,而是自己本身的話,這個函式就是遞迴函式。<2>遞迴函式的作用舉個例子,我們來計算階乘 n! = 1 * 2 * 3 * ... * n解決辦法1

Python函式,二分查詢演算法

目錄 一、初始遞迴 二、遞迴示例講解 二分查詢演算法 一、初始遞迴 遞迴函式:在一個函式裡在呼叫這個函式本身。 遞迴的最大深度:998 正如你們剛剛看到的,遞迴函式如果不受到外力的阻止會一直執行

十一、Go基礎程式設計:函式函式型別、匿名函式與閉包

1. 遞迴函式 遞迴指函式可以直接或間接的呼叫自身。 遞迴函式通常有相同的結構:一個跳出條件和一個遞迴體。所謂跳出條件就是根據傳入的引數判斷是否需要停止遞迴,而遞迴體則是函式自身所做的一些處理。 //通過迴圈實現1+2+3……+100 func Test01() int { i

函式使用例項

一.建立遞迴陣列 //$fid 父id $v['id'] 子id $v['child'] 子id陣列 //$cate 要迴圈的一維陣列 function digui($cate, $fid = 0){ foreach ($cate as $v)

Python全棧學習筆記day 17:函式之:二分法(老男孩Python全棧學習s9 day17 二分法程式有些問題)

遞迴函式 遞迴 : 在函式中呼叫自身函式 最大遞迴深度預設是997/998 —— 是python從記憶體角度出發做得限制 二分法: 實現程式: 最基礎版:(很多問題:切分導致出現了新列表,無法返回元素在 l 中的位置) l = [2,3,5,10,15,16,

python學習筆記(25) 堆疊和實現三級選單

menu = { '北京':{ '海淀':{ '五道口':{}, '上地':{}, '西三旗':{} }, '昌平':{}, '朝陽':{}, '東城':{} }

內建函式拓展,函式

1. lambda匿名函式 lambda 就是為了解決一些簡單的需求而設定的一句話函式 舉例: 計算一個數的平方: 用函式寫:def func(n):      return n*n 用匿名函式寫:f = lanbda n: n*n 語法:函式名 = lambda 引數: 函式體 注意: 1.

python摸爬滾打之day14----內建函式,函式

1、匿名函式  用一句話實現的簡單函式.   ret = lambda x : x ** 2      即 函式名 = lambda 形參 : 返回值   print(ret(5))  ----> 25 2、sorted()  ---->

python學習day17 函式

  遞迴函式 http://www.cnblogs.com/Eva-J/articles/7205734.html   def age(n): if n == 4: return 40 elif n >0 and n < 4:

python學習 day014打卡 內建函式二&函式

本節主要內容: 1.lambda匿名函式 2.sorted() 3.filter() 4.map() 5.遞迴函式 6.二分法   一.lambda匿名函式 為了解決一些簡單的需求而設計的一句話函式 # 計算n的n次方 def func(n): retur

函式使用引用傳遞的問題

對於演算法: 使用遞迴方法,刪除無頭結點單鏈表中所有值為x的結點。 考慮下面程式: void Del_X_3(LinkList &L,ElemType x) { LNode *p; if(L==NULL) return ;

php 函式的三種實現方式 php利用函式實現無限級分類

遞迴函式是我們常用到的一類函式,最基本的特點是函式自身呼叫自身,但必須在呼叫自身前有條件判斷,否則無限無限呼叫下去。實現遞迴函式可以採取什麼方式呢?本文列出了三種基本方式。理解其原來需要一定的基礎知識水品,包括對全域性變數,引用,靜態變數的理解,也需對他們的作用範圍有所理解。遞迴函式也是解決無限級分類的一個很

【PHP】函式實現運算器

<html> <head> <meta charset="utf-8"/> </head> <body> <!-- 表單提交開始--> <form action="test-digui.php"