PHP高效獲取樹結構信息
學習是通過具體的例子來多練習,知識點才會掌握鞏固。以下是本站小編精心為大家整理的PHP教程,希望對大家有所幫助!更多內容請關注應屆畢業生網!
在開發中,經常有一些簡單的樹形結構的存儲,比如產品的多級分類,多級導航欄菜單等,這些物體有一個特性,就是通常會獲取整棵樹結構。在數據庫裏保存樹結構的方法主要有三種,最簡單的一就是通過一個father_id指向當前結構的父節點。對於這樣的小結構,一般我們使用最簡單的方式存儲。
當要獲取整棵樹結構,網上一般用遞歸法,這種方式代碼簡單易懂,但是缺點是需要執行多次數據庫查詢,而且後面幾次獲取的元素數量很少甚至為0,效率很差。
其實,遇到這種情況,可以將所有的元素全部從數據庫獲取出來,然後再根據獲取的元素father_id構建樹結構,這樣就可以解決執行多次數據庫查詢的性能損耗。下面就以我在實際項目中獲取多級導航欄菜單中的函數進拋磚引玉了
12345678910111213141516171819202122232425262728293031 | /* 通過數據庫獲取所有元素,通過下面函數構造樹形結構 */ private function getTree( $menus ) {
$id = $level =0; $menuobjs = array ();
$tree = array (); $notrootmenu = array ();
foreach ( $menus as $menu ){
$menuobj = new stdClass(); $menuobj ->menu= $menu ;
$id = $menu [ 'id' ]; $level = $menu [ 'father_id' ]; $menuobj ->nodes= array (); $menuobjs [ $id ]= $menuobj ; if ( $level ){ $notrootmenu []= $menuobj ; } else { $tree []= $menuobj ; }
} foreach ( $notrootmenu as $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了呢?
-
PHP緩存技術
PHP具有非常強大的功能,所有的CGI的功能PHP都能實現,而且支持幾乎所有流行的數據庫以及操作系統。最重要的是PHP可以用C、C++進行程序的擴展!以下是小編為大家搜索整理的PHP緩存技術,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!全頁面靜態...
-
PHP學習入門的一些基礎知識
導語:PHP是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。下面我們來看看PHP學習入門的一些基礎知識,希望對大家有所幫助。一,PHP腳本代碼標記PHP的腳本是文件中一對特殊標記所包括的內容,如ASP是“”,PHP可看...
-
PHP時間和日期函數怎麼操作
php函數的多樣化和功能相近真是一大特點,同一個應用可以用多種函數實現,這恐怕也是開源的一個弊端了;通過對PHP時間函數的系統學習,充分理解了時間戳和時區的概念(這個真的很重要),有需要的小夥伴可以參考下。PHP中所有函數都是UNIX紀元的,即從1970年1月1日開始的。日...
-
編譯chm格式PHP手冊的方法
微軟的chm文件格式是很受我們喜愛的,因為它可以把很多HTML文件打包成一個文件,容易傳輸和分享。而且非常方便易用,支持索引、搜索等。正因為這樣,大家通常都使用chm版本的PHP手冊。php.net會定期編譯PHP手冊,提供各種版本供大家下載,包括chm格式。由於是定期編譯,所以...