У меня есть таблица базы данных с родительскими строками, одним родительским числом, связанным по полю «parent».Итерировать родительские дети без использования рекурсивного PHP
Я знаю, как петлю и напечатать структуру jerarquy с помощью рекурсивной функции в PHP, но когда я пытаюсь воспроизвести его с помощью одного кода петли, я не могу представить данные в том же формате. В этом примере кода перечислены все элементы в таблице базы данных, но не заказывали, он печатает первый верхний уровень, и я хочу, классический:
Top 1 >> Level 1 >> Level 2 >> Level 3
Top 2 >> Level 1
Top 3 >> Level 1 >> Level 2
$parent = array();
array_push($parent, 0);
while(!empty($parent)){
foreach($parent as $key => $mother){
unset($parent[$key]);
$sql = "SELECT * FROM levels WHERE parent = " . $mother;
$res = mysql_query($sql);
while($row=mysqli_fetch_object($res)){
print $row->name . "<br />";
array_push($parent, $row->id);
} // while
} // foreach
} // while
Результатом этого кода
Top 1 Top 2 Top 3 Уровень 1 ...
Не было бы проще выбрать все данные, которые вам нужны в одном запросе, а затем что-то сделать с ним? – simon
В случае рекурсивной функции, я думаю, что намного проще использовать несколько SELECT. В любом случае вы можете думать о массиве, заполненном той же структурой, что и в базе данных. Как вы перебираете его, чтобы перечислить данные предпочтительным образом? Рекурсия очень проста, я прошу не рекурсивный способ. – Cesar