2017-09-16 64 views
0

我正在使用PHP中的組織結構圖,並從數據庫中檢索數據。遍歷組織結構圖的未知級別的用戶

組織結構圖的一個例子如下所示,但它有一個未知數量的級別:

  1. 布蘭登

  2. 大衛

    一個。阿曼達

    b。 Michelle

    c。邁克爾

  3. 羅伯特

    一個。克里斯汀

    • 查爾斯

    • 阿什利

穿越型算法常常是我的弱點,我需要你的幫助。我已經嘗試過許多可以自稱的「遍歷」函數的變體,但我還沒有得到適當的解決方案。

我現在的臨時解決方案只有三個層次,你可以看到爲什麼它不現實。

foreach($user->getChildren() as $child) { 
    echo $child->name; 

    foreach($child->getChildren() as $ch) { 
     echo $ch->name; 

     foreach($ch->getChildren() as $c) { 
      echo $c->name; 
      // ... more foreach statements 
     } 
    } 
} 

$userclass User,並 $user->getChildren()包含具有$user其父用戶對象的數組

回答

2

你遍歷功能可能看起來是這樣的:

function traverse($users) 
{ 
    if(empty($users)) return; 

    foreach($users as $user) 
    { 
     echo $user->name; 
     traverse($user->getChildren()); 
    } 
} 

所以你有停止條件可以是if(empty($users)) return;if(count($users) == 0) return;,你會得到這個想法,並且每個級別上的foreach循環whi ch打印用戶的名稱,並再次爲用戶的子女調用該函數。

您可以將其稱爲traverse([$user]);,其中$user是您想要從中開始的用戶。