国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 邏輯算法 > 正文

PHP遞歸算法詳解

2020-03-22 18:54:19
字體:
來源:轉載
供稿:網友

本篇文章主要介紹PHP遞歸算法詳解,感興趣的朋友參考下,希望對大家有所幫助。

遇到需要設計樹節點的數據庫結構,以及需要讀出來的樹節點數據結構!大家是否會選擇用數據庫的查詢方式來獲取樹結構呢?

//曾經的數據庫查詢獲取方式$res = $this->db->query("select * from menu where pid = 0");foreach($res as $k=>$v){     $res[$k]['child'] = $this->db->query("select * from menu where pid =".$v['id']);}

//獲得結果 $res;
注意:不得不說,這種方式的確可行,但是它的缺點在于,你需要固定多少層級,以及數據庫的大量運行查詢。
不要忽視了那點數據庫的查詢消耗哦,數據小還無所謂,但是數據量大了。這種可行的方式,會給系統帶來很大的負擔!
那么,大家要明白一個道理,有些時候 數據庫的操作 利大于 PHP程序算法,有些時候則反之!
在這種基礎的樹節點情況下,用算法是最佳的。

PHP 代碼算法(CI框架實現:并非打廣告!)

  html' target='_blank'>public function getMenus(){    //查詢    $res = $this->db->get('menu')->result_array();    $res = $this->getChild($res);    print_r($res);}/** * 遞歸 樹節點算法 * @param array $array * @param number $pid */private function getChild($array,$pid = 0){    $data = array();    foreach ($array as $k=>$v){        //PID符合條件的        if($v['pid'] == $pid){            //尋找子集            $child = $this->getChild($array,$v['id']);            //加入數組            $v['child'] = $child?:array();             $data[] = $v;//加入數組中        }    }    return $data;}

//這樣的好處在于,運算速度快,消耗小,而且不定層級。意味著,數據庫寫多少層級,該算法,都可以獲取出來
結果:

Array([0] => Array    (        [id] => 1        [title] => PHP         [pid] => 0        [sort] => 0        [child] => Array            (            ))[1] => Array    (        [id] => 2        [title] => 系統設置        [pid] => 0        [sort] => 99        [child] => Array            (                [0] => Array                    (                        [id] => 4                        [title] => 權限管理                        [pid] => 2                        [sort] => 2                        [child] => Array                            (                            )                    )                [1] => Array                    (                        [id] => 5                        [title] => 菜單欄目                        [pid] => 2                        [sort] => 0                        [child] => Array                            (                            )                    )                [2] => Array                    (                        [id] => 3                        [title] => 管理員                        [pid] => 2                        [sort] => 99                        [child] => Array                            (                            )                    )            )    ))

相關推薦:

Python基于遞歸算法實現的漢諾塔與Fibonacci數列

PHP漢諾塔問題的遞歸算法的實現和迭代算法的實現

PHP漢諾塔問題的遞歸算法實現和迭代算法實現

以上就是PHP遞歸算法詳解的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和平区| 松潘县| 高淳县| 苍山县| 房山区| 体育| 休宁县| 宁阳县| 淮北市| 南皮县| 岳阳县| 措勤县| 南丹县| 博湖县| 木里| 新营市| 新竹县| 历史| 林周县| 白河县| 佛学| 应用必备| 合水县| 兰考县| 额济纳旗| 永新县| 武川县| 中山市| 游戏| 建瓯市| 阆中市| 葵青区| 界首市| 郴州市| 建平县| 昌平区| 综艺| 贡嘎县| 三明市| 慈利县| 慈利县|