下面小編就為大家?guī)硪黄狿HP樹-不需要遞歸的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。
PHP樹-不需要遞歸的實現(xiàn)方法
/**
* 創(chuàng)建父節(jié)點樹形數(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é)點樹形數(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);
執(zhí)行效果:
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] => 兒子
)
)
以上這篇PHP樹-不需要遞歸的實現(xiàn)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考