本文章介紹了一段關(guān)于不用遞歸實(shí)現(xiàn)php樹(shù)程序代碼,實(shí)例代碼如下:
- /**
- * 創(chuàng)建父節(jié)點(diǎn)樹(shù)形數(shù)組
- * 參數(shù)
- * $ar 數(shù)組,鄰接列表方式組織的數(shù)據(jù)
- * $id 數(shù)組中作為主鍵的下標(biāo)或關(guān)聯(lián)鍵名
- * $pid 數(shù)組中作為父鍵的下標(biāo)或關(guān)聯(lián)鍵名
- * 返回 多維數(shù)組
- **/
- function find_parent($ar, $id='id', $pid='pid') {
- foreach($ar as $v) $t[$v[$id]] = $v;
- foreach ($t as $k => $item){
- if( $item[$pid] ){
- if( ! isset($t[$item[$pid]]['parent'][$item[$pid]]) )
- $t[$item[$id]]['parent'][$item[$pid]] =& $t[$item[$pid]];
- }
- }
- return $t;
- }
- /**
- * 創(chuàng)建子節(jié)點(diǎn)樹(shù)形數(shù)組
- * 參數(shù)
- * $ar 數(shù)組,鄰接列表方式組織的數(shù)據(jù)
- * $id 數(shù)組中作為主鍵的下標(biāo)或關(guān)聯(lián)鍵名
- * $pid 數(shù)組中作為父鍵的下標(biāo)或關(guān)聯(lián)鍵名
- * 返回 多維數(shù)組
- **/
- function find_child($ar, $id='id', $pid='pid') {
- foreach($ar as $v) $t[$v[$id]] = $v;
- foreach ($t as $k => $item){
- if( $item[$pid] ) {
- $t[$item[$pid]]['child'][$item[$id]] =& $t[$k];
- }
- }
- return $t;
- }
- $data = array(
- array('ID'=>1, 'PARENT'=>0, 'NAME'=>'祖父'),
- array('ID'=>2, 'PARENT'=>1, 'NAME'=>'父親'),
- array('ID'=>3, 'PARENT'=>1, 'NAME'=>'叔伯'),
- array('ID'=>4, 'PARENT'=>2, 'NAME'=>'自己'),
- array('ID'=>5, 'PARENT'=>4, 'NAME'=>'兒子'),
- );
- $p = find_parent($data, 'ID', 'PARENT');
- $c = find_child($data, 'ID', 'PARENT');
- Print_r ($c);
- /*
- 結(jié)果如下:
- Array
- (
- [1] => Array
- (
- [ID] => 1
- [PARENT] => 0
- [NAME] => 祖父
- [child] => Array
- (
- [2] => Array
- (
- [ID] => 2
- [PARENT] => 1
- [NAME] => 父親
- [child] => Array
- (
- [4] => Array
- (
- [ID] => 4
- [PARENT] => 2
- [NAME] => 自己
- [child] => Array
- (
- [5] => Array
- (
- [ID] => 5
- [PARENT] => 4
- [NAME] => 兒子
- )
- )
- )
- )
- )
- [3] => Array
- (
- [ID] => 3
- [PARENT] => 1
- [NAME] => 叔伯
- )
- )
- )
- [2] => Array
- (
- [ID] => 2
- [PARENT] => 1
- [NAME] => 父親
- [child] => Array
- (
- [4] => Array
- (
- [ID] => 4
- [PARENT] => 2
- [NAME] => 自己
- [child] => Array
- (
- [5] => Array
- (
- [ID] => 5
- [PARENT] => 4
- [NAME] => 兒子
- )
- )
- )
- )
- )
- [3] => Array
- (
- [ID] => 3
- [PARENT] => 1
- [NAME] => 叔伯
- )
- [4] => Array
- (
- [ID] => 4
- [PARENT] => 2
- [NAME] => 自己
- [child] => Array
- (
- [5] => Array
- (
- [ID] => 5
- [PARENT] => 4
- [NAME] => 兒子
- )
- )
- )
- [5] => Array
- (
- [ID] => 5
- [PARENT] => 4
- [NAME] => 兒子
- )
- )
- */
新聞熱點(diǎn)
疑難解答