php無限分類形成列表樹並顯示子欄目總數

2021-07-11 12:45:29 字數 2715 閱讀 4901

<?php

$arr = array(

array('id' => 111, 'pid' => 0, 'name' => '江西省'),

array('id' => 5, 'pid' => 2, 'name' => '雞西市'),

array('id' => 2, 'pid' => 0, 'name' => '黑龍江省'),

array('id' => 3, 'pid' => 111, 'name' => '南昌市'),

array('id' => 6, 'pid' => 4, 'name' => '香坊區'),

array('id' => 27, 'pid' => 4, 'name' => '南崗區'),

array('id' => 8, 'pid' => 6, 'name' => '和興路'),

array('id' => 9, 'pid' => 27, 'name' => '西大直街'),

array('id' => 10, 'pid' => 8, 'name' => '東北林業大學'),

array('id' => 11, 'pid' => 9, 'name' => '哈爾濱工業大學'),

array('id' => 12, 'pid' => 8, 'name' => '哈爾濱師範大學'),

array('id' => 13, 'pid' => 111, 'name' => '贛州市'),

array('id' => 14, 'pid' => 13, 'name' => '贛縣'),

array('id' => 15, 'pid' => 13, 'name' => '于都縣'),

array('id' => 16, 'pid' => 14, 'name' => '茅店鎮'),

array('id' => 17, 'pid' => 14, 'name' => '大田鄉'),

array('id' => 18, 'pid' => 16, 'name' => '義源村'),

array('id' => 19, 'pid' => 16, 'name' => '上壩村')

); static $_arr2 = array(); //用於存放整理好的資料

/*** 對陣列按照子父類順序整理,並且直接獲取欄目的所有子欄目數

* @param array $_arr2 用於存放整理結果的陣列

* @param array $arr 需要整理的陣列

* @param number $pid 父欄目id,會遞迴找出該父親欄目下的所有子欄目

* @param number $level 第幾級

* @return array $num 子欄目數

*/function gettreeandnum(&$_arr2, $arr, $pid=0, $level=0 ,$isclear=false)

}return $num; }

/*** 對陣列按照子父類順序整理

* @param array $arr 需要整理的陣列

* @param number $pid 父欄目id

* @param number $level 第幾級

* @return array $_arr 整理好的陣列

*/function gettree($arr, $pid=0, $level=0, $isclear=false)

} return $_arr;

}

/*** 獲取乙個欄目的所有子欄目數

* @param array $arr 陣列

* @param number $catid 父欄目

* @return number $_ret 乙個欄目的子欄目數

*/function getchildrennums($arr, $catid, $isclear=false)

}return $_ret;

} /**

* 獲取列表樹,此方法先遍歷整理好的陣列,在遍歷的過程中再次去呼叫函式獲取該欄目的所有子欄目數目

* @param unknown $arr 陣列

*/function getlist($arr) }

function getnewlist($arr)

} /**

* 返回當前的時間,以秒為單位

* @return number

*/function getmictime()

/*** 效能測試,由於資料量比較小,迴圈後才能見到差距,資料量大的話,差距會明顯些

* 總結來說,方案2的效率會高些

*/echo '';

/****************方案1**********************/

$time1 = getmictime();

for($i = 0; $i < 4000; $i++)

$time2 = getmictime();

echo '方案1的效能為:'.($time2-$time1).'';

/****************方案2**********************/

$time3 = getmictime();

for($i = 0; $i < 4000; $i++)

$time4 = getmictime();

echo '方案2的效能為:'.($time4-$time3).'

';

PHP 無限分類 下拉列表實現

今天在這簡單總結一下php裡無限分類的用法,當然在實際專案或者業務中,是一定結合著資料庫來完成的,這裡我是在做mvc架構練習中,封裝了無限分類的model類來完成的,糾結了一段時間,所以特此寫blog總結,無限分類的入門理解 什麼是無限級分類?無限級分類是一種分類技巧,例如部門組織,文章分類,學科分...

PHP無限極分類樹

建表資料 create table limit tree id int 10 unsigned not null auto increment,pid int 10 unsigned not null default 0 name varchar 64 not null default primar...

Php無限層級,並顯示層級數

這裡的arr是直接從資料庫取出的,僅作為測試資料 arr array array id 1,name 一級選單a pid 0 pid 父級id array id 2,name 一級選單b pid 0 array id 3,name 二級選單a pid 1 array id 4,name 二級選單b ...