Рекурсия для создания дерева меню
В вашей ситуации у вас есть структура базы данных, в которой категории имеют «корневое» поле, указывающее их родительскую категорию . Желаемый вывод HTML включает вложенные списки, представляющие иерархию категорий. Для этого можно использовать рекурсивную функцию PHP.
Вот пример функции:
function recurse($categories, $parent = null, $level = 0) {
$ret = '';
foreach ($categories as $index => $category) {
if ($category['root'] == $parent) {
$ret .= '' . $category['name'] . '
';
$ret .= $this->recurse($categories, $category['id'], $level 1);
$ret .= ' ';
}
}
return $ret . '
';
}
Эта функция предполагает, что корневые категории имеют поле root со значением null. Он перебирает категории, определяет дочерние категории на основе их «корневого» поля и создает HTML с использованием вложенных списков.
Чтобы использовать эту функцию:
При желании вы можете изменить функцию, чтобы избежать пустых списков, установив флажок если у категории есть дочерние категории перед созданием списка:
function recurse($categories, $parent = null, $level = 0) {
$ret = '';
foreach ($categories as $index => $category) {
if ($category['root'] == $parent) {
$ret .= '' . $category['name'] . '
';
$sub = $this->recurse($categories, $category['id'], $level 1);
if ($sub != '
') {
$ret .= $sub;
}
$ret .= ' ';
}
}
return $ret . '
';
}
Эта измененная функция будет создавать списки только в том случае, если у категории есть хотя бы один дочерний элемент.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3