问题: 我想不出对我的具体情况使用递归函数的方式。
情况:
Mysql DB
id | root | name |
在root
显示给女巫类别的地方这是子类别。
HTML应该如何显示:
<li><a href="#"><p class="Tier0">Datori</p></a>
<ul style="display: block">
<li><a href="#"><p class="Tier1">Cookies</p></a></li>
<li><a href="#"><p class="Tier1">Events</p></a></li>
<li><a href="#"><p class="Tier1">Forms</p></a></li>
<li><a href="#"><p class="Tier1">Games</p></a></li>
<li><a href="#"><p class="Tier1">Images</p></a>
<ul>
<li><a href="#"><p class="Tier2">CSS</p></a></li>
<li><a href="#"><p class="Tier2">JavaScript</p></a></li>
<li><a href="#"><p class="Tier2">JQuery</p></a></li>
</ul>
</li>
<li><a href="#"><p class="Tier1">Navigations</p></a>
<ul>
<li><a href="#"><p class="Tier2">CSS</p></a></li>
<li><a href="#"><p class="Tier2">JavaScript</p></a></li>
<li><a href="#"><p class="Tier2">JQuery</p></a></li>
</ul>
</li>
<li><a href="#"><p class="Tier1">Tabs</p></a></li>
</ul>
</li>
<li><a href="#"><p class="Tier0">Washing Machines</p></a>
我需要什么样的PHP函数才能将其全部打印出来?
怎么样:
function recurse($categories, $parent = null, $level = 0)
{
$ret = '<ul>';
foreach($categories as $index => $category)
{
if($category['root'] == $parent)
{
$ret .= '<li><a href="#"><p class="Tier' . $level . '">' . $category['name'] . '</p></a>';
$ret .= $this->recurse($categories, $category['id'], $level+1);
$ret .= '</li>';
}
}
return $ret . '</ul>';
}
此函数要求您首先在数据库中查询可用类别的整个列表,并假设您的根类别的值为null,但是可以根据当前模式的工作方式将该函数更改为接受-1或0。
$categories = { get from database into an multi-dimensional array };
$Tree = $this->recurse($categories);
echo $Tree;
您可以考虑执行以下操作,以防止在父级不存在任何子级时出现任何空的UL:
function recurse($categories, $parent = null, $level = 0)
{
$ret = '<ul>';
foreach($categories as $index => $category)
{
if($category['root'] == $parent)
{
$ret .= '<li><a href="#"><p class="Tier' . $level . '">' . $category['name'] . '</p></a>';
$sub = $this->recurse($categories, $category['id'], $level+1);
if($sub != '<ul></ul>')
$ret .= $sub;
$ret .= '</li>';
}
}
return $ret . '</ul>';
}
但是,最好的解决方案是选择数据以包括一列,该列包含每个类别有多少个子类别。
select Category.*, (select count(distinct c1.id) from Category as c1 where c1.root = Category.id) as ChildCount from Category
您的功能将是:
function recurse($categories, $parent = null, $level = 0)
{
$ret = '<ul>';
foreach($categories as $index => $category)
{
if($category['root'] == $parent)
{
$ret .= '<li><a href="#"><p class="Tier' . $level . '">' . $category['name'] . '</p></a>';
if($category['ChildCount'] > 0)
$ret .= $this->recurse($categories, $category['id'], $level+1);
$ret .= '</li>';
}
}
return $ret . '</ul>';
}
希望有帮助吗?
问题内容: (希望)对某些人来说,这是一个非常简单的问题。 我有一个来自mySQL数据库的递归菜单,现在我的主要问题是: 创建URL的最佳方法是什么?我希望输入每行的标题,例如/ eggs / milk / bacon /。鸡蛋处于0级,例如:鸡蛋0,牛奶1,培根2。关于如何动态输出此内容的任何想法? 对于“ cletus”所说的这个问题,我几乎要去做些评论:PHP / MySQL- 建立导航菜单
问题:我想不出根据我的具体情况制作递归函数的方法。 情况: 其中向切换类别显示这是子类别。 HTML应该是什么样子的: 我需要什么样的PHP函数来打印出来?
我想以前也有人问过类似的问题,但我不知道我想做的事情在逻辑上是否可行。 我目前在我们的内部网上使用DDSmoothMenu列出我们所有员工都可以访问的文档。 菜单结构类似于: 菜单的基本结构如下: 我认为它必须涉及某种多维数组和递归目录迭代器,但我希望遍历每个文件夹并创建如上所述的HTML布局。 我认为可以做开始标记,但不确定在目录全部列出后如何做结束标记。
问题内容: 我期望以下内容返回所有元组,将层次结构中的每个父级解析到顶部,但它仅返回最低级别(在查询中指定了其ID)。如何为给定的level_id返回整棵树? 问题答案: 首先,如果您确实是祖父母,则应该如此。其次,您在查询的递归一半中的(隐式)连接条件是向后的,您想让父级脱离,而不是:
本文向大家介绍Vue2递归组件实现树形菜单,包括了Vue2递归组件实现树形菜单的使用技巧和注意事项,需要的朋友参考一下 今天看了老长时间递归组件,官方给的教程太简便了,根本看不出到底怎么用。于是自己查网摸索了一下,这儿只把核心思想写出来。 效果如下图,点击后打开二级菜单,再点击后打开三级。 由于每次递归组件,就相当于实例化了一次组件。所有写在组件data中的值都是该组件专属的。 树状结构: 我
问题内容: 我正在尝试浏览目录中的所有文件,如果有目录,则浏览其所有文件,依此类推,直到没有更多目录可访问。每个处理的项目将添加到下面的函数中的结果数组中。尽管我不确定我能做什么/我做错了什么,但是它不起作用,但是当处理下面的代码时,浏览器的运行速度非常慢,不胜感激,谢谢! 码: 问题答案: 获取目录中的所有文件和文件夹,如果拥有或,请不要调用函数。 您的代码: 输出(示例):