【发布时间】:2014-10-04 10:45:43
【问题描述】:
我有一个非常简单的任务,但我在某个地方迷路了。我有具有通用结构的类别表:id、id_parent、其他一些不太重要的字段。我需要像这样构建从父节点到子节点的多维数组:
array(
'id' => 1,
'id_parent' => 0,
'name' => 'Main',
'children' => array(
'id' => 2,
'id_parent' => 1,
'name' => 'Main-sub',
'children' => array(
'id' => 3,
'id_parent' => 2,
'name' => 'Main-sub-sub'
)
)
)
我已经给出了类别的 id(例如 id = 3)。我需要找到这个类别的第一个父级,然后构建向下遍历的树。我尝试了递归使用 if 语句的最简单方法,但是我得到的数组顺序是相反的。这就是现在的样子:
public function getCategoryById($id)
{
$branch = array();
$data = $this -> db -> query("SELECT categories.* FROM categories WHERE categories.visible = 1 AND categories.id = {$id} ORDER BY categories.position -- LIMIT 1");
if(is_array($data))
{
foreach($data as $item)
{
if($item['id_parent'] != 0)
{
// do it again recursively
$parent = $this -> getCategoryById($item['id_parent']);
$branch['parents'] = $parent;
// lost here
}
// lost here also
$branch[] = $item;
}
}
return $branch;
}
我搜索了线程并发现了一些与我类似的问题,但解决方案不适用于我的情况。
任何帮助将不胜感激。
【问题讨论】:
标签: php arrays multidimensional-array tree