Страницы

Поиск по вопросам

понедельник, 8 апреля 2019 г.

PHP:Как вывести дерево категорий?

наткнулся на статью хорошо описано про создания дерево категории, но функция вернет ответь в готовый html но я хочу получать дерево в массиве структура такая:

//Выбираем данные из БД $result=mysql_query("SELECT * FROM categories"); //Если в базе данных есть записи, формируем массив if (mysql_num_rows($result) > 0){ $cats = array(); //В цикле формируем массив разделов, ключом будет id родительской категории, а также массив разделов, ключом будет id категории while($cat = mysql_fetch_assoc($result)){ $cats_ID[$cat['id']][] = $cat; $cats[$cat['parent_id']][$cat['id']] = $cat; } }
function build_tree($cats,$parent_id,$only_parent = false){ if(is_array($cats) and isset($cats[$parent_id])){ $tree = '

    '; if($only_parent==false){ foreach($cats[$parent_id] as $cat){ $tree .= '
  • '.$cat['name'].' #'.$cat['id']; $tree .= build_tree($cats,$cat['id']); $tree .= '
  • '; } }elseif(is_numeric($only_parent)){ $cat = $cats[$parent_id][$only_parent]; $tree .= '
  • '.$cat['name'].' #'.$cat['id']; $tree .= build_tree($cats,$cat['id']); $tree .= '
  • '; } $tree .= '
'; } else return null; return $tree; }
echo build_tree($cats,0);//результат в html
результат в виде html:

Вопрос: возможно ли получит дерево категории в виде массива не зависимо от вложенности


Ответ

Вопрос: возможно ли получит дерево категории в виде массива не зависимо от вложенности ?
Отвечаю на этот вопрос во втором примере ! Хотя и первый тоже может понадобится.В моём коде он выводит категории в dropdown lists(

';
print_r(CreateTree($arr));

2. Результат: Многомерный массив с иерархической вложенностью:
function CreateTree($array,$sub=0) { $a = array(); foreach($array as $v) { if($sub == $v['parent_id']) { $b = CreateTree($array,$v['id']); if(!empty($b)) $a[$v['name']] = $b; else $a[$v['id']] = $v['name']; } } return $a; } echo "
";
print_r(CreateTree($arr));

    

Комментариев нет:

Отправить комментарий