我有带列的表格菜单: id
, value
, id_parent
. 还有多级菜单:
Item0
Item1
Item2
Item3
我想删除 Item1
我有他的 id
. 如何删除 Item2
以及 Item3
当我删除 Item1
? 我从表中选择:
public function searchChildren($id)
{
$sql = "SELECT id FROM menu WHERE id_parent = '{$id}'";
return $this->db->query($sql);
}
我能找到 id
第一个孩子:
$idChild = $this->model->search_children_id($id);
如何使用循环或递归找到其余的子级?
3条答案
按热度按时间yebdmbv41#
因为你有一个
id
,只需使函数删除。示例:wnrlj8wa2#
我会创建一个通过引用传递给自身的变量函数,这可能是更好的方法,但是我用这个方法创建了一个树导航器,它工作得非常好
我只需要检查这个id下是否有child,是否有循环,直到没有更多的child为止,一旦有了,就删除这个id
这是未经测试的代码和伪代码,但你会明白的
tyu7yeag3#
我建议使用递归函数来查找他的所有子对象。如果同一级别有多个孩子,您希望发生什么?
更新:我的错,我不是故意让你悬着的。。。下面是一些递归函数的代码。它本质上与我用来显示菜单的方式相同,只是为了您的目的而进行了精简和重构。
我对数据列使用pk\u id、menu\u item和menu\u parent。
我真的希望这对你有帮助。
调用递归函数,该函数将返回自身和所有子项的字符串。
转换为数组。
循环遍历数组以删除所需内容。