#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);