функция вложенных категорий ul li

#php #arrays #tree

#php #массивы #дерево

Вопрос:

моя таблица категорий

 ID,PARENT,NAME,ORDER
  

ul > li > li … вот так я хочу отсортировать свои данные с помощью функции php.

сначала я хочу собрать все в массив. после использования функции.

 $query = mysql_query("SELECT ID,PARENT,NAME,ORDER FROM categories");

$category = array();

if(mysql_num_rows($query)>0){
    while ($rs= mysql_fetch_assoc($query))
        $category[$rs['PARENT']][$rs['ORDER']] = array('id'=>$rs['ID'],'name'=>$rs['NAME']);
}
  

После как я могу печатать в соответствии с сортируемым меню?

 <ul>
    <li>menu1
        <ul>
            <li>menu1a</li>
            <li>menu1b</li>
        </ul>
    </li>
    <li>menu2
        <ul>
            <li>menu2a</li>
            <li>menu2b</li>
        </ul>
    </li>
    <li>menu3
        <ul>
            <li>menu3a<ul>
                <li>menu3a_a</li>
                <li>menu3a_b</li>
            </ul></li>
            <li>menu3b</li>
        </ul>
    </li>
</ul>
  

Ответ №1:

Я думаю, вам нужно использовать recurse(0, $ category); вместо recurse(0, $categories); и для каждой категории вы должны вызывать эту функцию.

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

1. да, в соответствии с меню категорий <ul> <li>dede</li> <li>dede</li> </ul>

2. тогда в чем проблема? Я думаю, вам нужно использовать recurse(0, $ category); вместо recurse(0, $categories);

3. я использовал Google translate. функцию я привел для примера. как я могу распечатать меню в соответствии с. (ul>li)

4. пожалуйста, уточните, что вы хотите спросить.

5. я решил. function makeTree($parent, $categories) { if(isset($categories[$parent]) amp;amp; count($categories[$parent])) { $output = '<ul'; if($parent==0) $output .= ' id="prCat"'; $output .= '>'; ksort($categories[$parent]); foreach ($categories[$parent] as $category) { $output .= '<li><a href="#"'; if($parent==0) $output .= ' class="s_prct"'; $output .= '>' . $category['NAME'] . '</a>'; $output .= makeTree($category['ID'], $categories); $output .= '</li>'; } $output .= '</ul>'; return $output; } } echo makeTree(0, $categories);