鍍金池/ 問答/PHP  C++  HTML/ PHP遞歸樹形結(jié)構(gòu)函數(shù)疑問?

PHP遞歸樹形結(jié)構(gòu)函數(shù)疑問?

function getTree($data, $pId)
{

 $tree = '';   // -------------------1

foreach($data as $k => $v)
{
if($v['cate_ParentId'] == $pId)
{ //父親找到兒子

$v['cate_ParentId'] = getTree($data, $v['cate_Id']); //---------------------2

 $tree[] = $v;     //------------------------3
 
 //unset($data[$k]);
}

}

 return $tree; // -----------------4

}
$tree = getTree($data, 0);

疑問:
1.這個(gè)是在網(wǎng)上看到的遞歸方法,我現(xiàn)在有個(gè)疑問,在第一步的時(shí)候定義$tree = '',那就意味著每次調(diào)用函數(shù)getTree()時(shí),都會(huì)重新賦值$tree, 那為什么最后return $tree 時(shí)還是一個(gè)完整的樹形結(jié)構(gòu),并沒有缺少數(shù)據(jù)。

2.比如一個(gè)節(jié)點(diǎn):自己->兒子->孫子。 按照上面的函數(shù)執(zhí)行流程,[自己->兒子] 這個(gè)過程,函數(shù)運(yùn)行始終是在步驟1和步驟2之間運(yùn)行的吧,等到[孫子]這個(gè)節(jié)點(diǎn)已經(jīng)是末節(jié)點(diǎn)了,所以會(huì)執(zhí)行步驟4,那么$tree里面的數(shù)據(jù)不應(yīng)該是空的么?

誰給解釋一下,我現(xiàn)在很暈。

回答
編輯回答
初心

此tree非彼tree

每一次遞歸的時(shí)候 這個(gè)tree的指向是不同的

2018年3月31日 14:14