【发布时间】:2015-03-28 13:00:21
【问题描述】:
我想通过使用邻接列表模型简单地创建一个多级(三层深)类别层次结构。
分类表:
________________________________________________________________________
| id | parent_id | name | page_order
————————————————————————————————————————————————————————————————————————
| 1 | 0 | Home | 0
| 2 | 0 | sweets | 0
| 3 | 2 | tin sweet | 0
| 4 | 3 | tin rasugulla | 0
| 5 | 2 | kaju katri | 0
| 6 | 2 | ras malai | 0
————————————————————————————————————————————————————————————————————————
我的结果应该是这样的(根据上表):
- 首页
- 糖果
- 锡甜
- 锡拉苏古拉
- kaju 卡特里
- 拉斯马莱
- 锡甜
但我得到的输出几乎没有什么不同:
- 首页
- 糖果
- 锡甜
- kaju 卡特里
- 拉斯马莱
- 锡拉苏古拉
这是我的代码点火器代码:
public function get_nested(){
// fetching categories from table
$this->db->order_by($this->_order_by);
$pages = $this->db->get($this->_table_name)->result_array();
// now creating category tree
foreach ($pages as $page){
if ($page['parent_id'] == 0){
$array[$page['id']] = $page;
}else {
$array[$page['parent_id']]['children'][$page['id']] = $page;
}
}
return $array;
}
查询结果截图:var_dump($pages);
var_dump($array)的快照:
这是一个创建输出列表的代码:
function toUL($array)
{
$html = '<ul>' . PHP_EOL;
foreach ($array as $value)
{
$html .= '<li>' . $value['title'];
// do we have any children?
if (isset($value['children']) && count($value['children'])){
$html .= toUL($value['children']);
}
$html .= '</li>' . PHP_EOL;
}
$html .= '</ul>' . PHP_EOL;
return $html;
}
我上面的代码给了我通知错误:未定义的索引:标题
【问题讨论】:
-
你能把查询结果贴出来
$pagesarray -
get_nested 函数不会产生你想要的数组,它会产生 2 层数组。
-
好的.. 我正在发布 var_dump($array) 的快照
-
看我发布了一个查询结果..
标签: php mysql codeigniter hierarchy hierarchical-data