Здравствуйте, есть таблица с категориями( ее структура на картинке ).
Построить само дерево исходя из id и parent_id у меня получилось:
function getCats($res){
$levels = array();
$tree = array();
$cur = array();
foreach($res as $rows){
$cur = &$levels[$rows['id']];
$cur['parent_id'] = $rows['parent_id'];
$cur['title'] = $rows['title'];
if($rows['parent_id'] == 0){
$tree[$rows['id']] = &$cur;
}
else{
$levels[$rows['parent_id']]['children'][$rows['id']] = &$cur;
}
}
return $tree;
}
function getTree($arr, $nl = 1, $nr = 0){
$out = '';
$out .= '<ul>';
foreach($arr as $k=>$v){
$out .= '<li>'.$v['title'].' - id : '.$k.' - pid : '.$v['parent_id']."</li><li>nl : ".$nl." - nr : ".$nr."</li>";
if(!empty($v['children'])){
$out .= getTree($v['children'], $nl, $nr);
}
}
$out .= '</ul>';
return $out;
}
$cats = getCats($array);
echo getTree($cats);
Немного исправленные функции, найденные в интернете.
Столбцы NSLeft и NSRight в таблице заполнены правильно, но давайте представим, что они пусты.
Как раз
воспроизвести их значения для каждой из категорий у меня не получается.
Если кто то поможет буду крайне признателен.