再帰を使用してください!注:以下のコードは循環グラフには安全ではありません(ノードはそれ自体の祖先ではない可能性があります)!
printChildren($items,0);
function printChildren(array $items, $parentId){
foreach($items as $item){
if($item['parent']==$parentId){
print '<li>';
print $item['label']; //or whatever you want about the current node
print '<ul>';
printChildren($items, $item['id']);
print '</ul></li>';
}
}
}