Приложение для построения приложения, которое будет отображать генеалогическое древо из базы данных с использованием функции рекрусирования. Для начала все работает фантастически, но моя функция не зацикливается глубже и петля child
их child
.Рекурсивная функция Php, не зацикливающаяся глубже
На изображении выше зацикливание должен также цикл Annie
Чайлдс Steve
и Rex
.
Проверьте мой код:
<?php
$categories = $db->query("SELECT * FROM user");
$data = array();
// build menu
function buildTree(array $elements, $parentId = 0) {
$branch = array();
foreach ($elements as $element) {
if ($element['parent'] == $parentId) {
$children = buildTree($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[] = $element;
}
}
return $branch;
}
// Child recrusive looping
function recrusive_child($childs) {
if(isset($childs)) {
foreach ($childs as $child) {
echo "<li><a href='#'>".$child['username']."</a></li>";
}
}
}
while ($result = $categories->fetch_assoc()) {
$data[] = $result;
}
$tree = buildTree($data);
?>
<div class="tree">
<ul>
<?php foreach ($tree as $item): ?>
<?php if($item['parent'] == null): ?>
<li><a href=""><?= $item['username'];?></a>
<?php if($item['children']): ?>
<ul>
<?php recrusive_child($item['children']); ?>
</ul>
<?php endif; ?>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
</div>
</div>
Thats потому что ваш recursive_chi ld действительно не рекурсивный, он никогда не называет себя. – Neat
Справа. Позвольте мне проверить и изменить и сделать recrusive ребенка. – Ivan
Теперь работайте хорошо, но у ребенка проблемы с проблемами не отображаются ниже ребенка. Теперь все внутри! Я должен проверить мои css и html, чтобы увидеть это – Ivan