我在PHP中使用组织结构图,并从数据库中检索数据。
组织结构图的示例如下所示,但它具有未知数量的级别:
我
布兰登
大卫
一个。阿曼达
湾米歇尔
℃。迈克尔
罗伯特
一个。克里斯汀
查尔斯
阿什利
遍历式算法经常是我的弱点,我需要你的帮助。我已经尝试了很多变种" traverse"可以自称的功能,但我还没有达到适当的解决方案。
我现在的临时解决方案只有三个级别,你可以看出为什么它不现实。
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
}
}
}
$user
属于class User
,并且
$user->getChildren()
包含一个以$user
为父级
答案 0 :(得分: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
循环,它会打印用户名,以及再次为用户的孩子调用该功能。
您可以将其称为traverse([$user]);
,其中$user
是您要开始的用户。