糯米文學吧

位置:首頁 > 計算機 > php語言

PHP高效獲取樹結構信息

php語言1.73W

學習是通過具體的例子來多練習,知識點才會掌握鞏固。以下是本站小編精心為大家整理的PHP教程,希望對大家有所幫助!更多內容請關注應屆畢業生網!

PHP高效獲取樹結構信息

在開發中,經常有一些簡單的樹形結構的存儲,比如產品的多級分類,多級導航欄菜單等,這些物體有一個特性,就是通常會獲取整棵樹結構。在數據庫裏保存樹結構的方法主要有三種,最簡單的一就是通過一個father_id指向當前結構的父節點。對於這樣的小結構,一般我們使用最簡單的方式存儲。

當要獲取整棵樹結構,網上一般用遞歸法,這種方式代碼簡單易懂,但是缺點是需要執行多次數據庫查詢,而且後面幾次獲取的元素數量很少甚至為0,效率很差。

其實,遇到這種情況,可以將所有的元素全部從數據庫獲取出來,然後再根據獲取的元素father_id構建樹結構,這樣就可以解決執行多次數據庫查詢的性能損耗。下面就以我在實際項目中獲取多級導航欄菜單中的函數進拋磚引玉了

12345678910111213141516171819202122232425262728293031/*通過數據庫獲取所有元素,通過下面函數構造樹形結構*/privatefunctiongetTree($menus){$id=$level=0;$menuobjs=array();$tree=array();$notrootmenu=array();foreach($menusas$menu){$menuobj=newstdClass();$menuobj->menu=$menu;$id=$menu['id'];$level=$menu['father_id'];$menuobj->nodes=array();$menuobjs[$id]=$menuobj;if($level){$notrootmenu[]=$menuobj;}else{$tree[]=$menuobj;}}foreach($notrootmenuas$menuobj){$menu=$menuobj->menu;$id=$menu['id'];$level=$menu['father_id'];$menuobjs[$level]->nodes[]=$menuobj;}return$tree;}}

  【拓展閲讀】php好學嗎?幾個月能學會php開發嗎?

好多要來硬漢科技學習的學員在來之前都問我:老師,我不是專業的計算機學生,我沒有接觸過PHP ,我一點基礎也沒有,我能學會PHP嗎?也有些一直想來硬漢科技學習PHP的學員很好奇,這麼多的內容,在4個多月的時間就全部學完,真的可以麼?這幾個月以後自己還是一問三不知怎麼辦?今天,我們就來説説學習PHP開發這件事。

  PHP是什麼,應用得怎麼樣?

PHP,一個嵌套的.縮寫名稱,是英文超級文本預處理語言(PHP:Hypertext Preprocessor)的縮寫。PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域,現在被很多的網站編程人員廣泛的運用(以上為專業解釋)。小編還想説的是,很多大型網站其實都是用PHP語言編寫的,比如:百度、阿里巴巴、騰訊(簡稱BAT)。

  4個多月能學會PHP嗎?

在回答這個問題之前小編想説一下大道理,有些時候,我們往往把事情想的太困難,而真正去做的時候,才會發現自己的潛力。永遠不要懷疑自己的能力,有時候你不逼自己一把,根本不知道自己有多優秀,與其前怕狼後怕虎,不如拼盡全力的去學習這幾個月。

現在回到這個問題上來,對於沒有基礎的朋友幾個月真的能學會PHP開發嗎?小編的回答是:能,也不能!有人肯定就會對我這個答案嗤之以鼻,説你的答案和不回答有什麼區別呢?其實,大道理誰都明白。對於有毅力肯下功夫學習的人説的,是可以學好的;但那些一遇到困難就退縮的人來説,就真是遺憾了。在硬漢科技每天8:30準時上課,並且還有晚自習,技術老師也會全程陪着你,有不懂的問題可以隨時詢問。這樣的學習環境下,你説能不能學會PHP?

學習天貓、UI、Web前端等任何一門新的技術也是這樣,“世上無難事,只怕有心人”你沒有下定決心去做一件事,怎麼知道自己不能學會呢。

舉個栗子:硬漢科技在2015年11月PHP的班級裏面有一名學員是高中畢業生,並且已經在酒吧工作了好幾年了。用他自己的話來説:僅有的一點點知識早已經丟到了爪哇國了,但是通過他在硬漢科技的5個月的努力學習,他不僅找到了工作,而且工資還是班裏的佼佼者,這樣,你有沒有信心學好PHP了呢?