2
我有一个对象列表,它是父对象与“n”孩子的其他对象。递归列表函数
为了列出的父母,我已经成功与该这样做:
echo "<ol>";
foreach ($indicator_dimensions as $dimension) {
if (empty($dimension->parent)) {
echo "<li>";
echo $dimension->dimension;
$subdimensions = Indicator_dimension::find_by_sql("SELECT * FROM indicator_dimension where parent=".$dimension->id);
if (count($subdimensions) != 0) {
find_leaves($subdimensions);
}
echo "</li>";
}
}
echo "</ol>";
要列出自己的孩子,我使用这个功能:
function find_leaves($dimensions){
echo "<ol>";
foreach ($dimensions as $dimension) {
echo "<li>";
echo $dimension->dimension;
if (!empty($dimension->parent)) {
$subdimensions = Indicator_dimension::find_by_sql("SELECT * FROM indicator_dimension where parent=".$dimension->id);
if (count($subdimensions) != 0) {
find_leaves($subdimensions);
}
}
echo "</li>";
}
echo "</ol>";
}
虽然它的工作,这是丑陋的代码,我想重构,但没有得到大脑...
提前欣赏提高任何提示!
首先,您应该阅读更多有效的技术来存储和检索关系数据库中的树数据,例如[嵌套集](http://en.wikipedia.org/wiki/Nested_set_model)或[封闭表](http:// karwin.blogspot.de/2010/03/rendering-trees-with-closure-tables.html)。 – bitWorking