создать рекурсивное меню навигации php

Чтобы создать динамическое меню навигации, я запустил запрос

select `category_id`,`category_name`,`parent_category_id`,`sort_order` from `item_category` 

и я получаю результат

 Array ( [0] => Array ( [category_id] => 9 [category_name] => cat1 [parent_category_id] => 0 [sort_order] => 0 ) [1] => Array ( [category_id] => 11 [category_name] => cat3 [parent_category_id] => 0 [sort_order] => 0 ) [2] => Array ( [category_id] => 15 [category_name] => cat7 [parent_category_id] => 10 [sort_order] => 0 ) [3] => Array ( [category_id] => 17 [category_name] => cat9 [parent_category_id] => 10 [sort_order] => 1 ) [4] => Array ( [category_id] => 13 [category_name] => cat5 [parent_category_id] => 11 [sort_order] => 0 ) [5] => Array ( [category_id] => 16 [category_name] => cat8 [parent_category_id] => 15 [sort_order] => 0 ) [6] => Array ( [category_id] => 10 [category_name] => cat2 [parent_category_id] => 9 [sort_order] => 1 ) [7] => Array ( [category_id] => 12 [category_name] => test5 [parent_category_id] => 9 [sort_order] => 0 ) ) 

Я попытался создать навигационную панель из нее

 function create_array($number, $data) { $result = array(); foreach ($data as $row) { if ($row['parent_category_id'] == $number) { $result[$row['category_id']] = create_array($row['category_id'], $data); } } return $result; } $menu_array=create_array(0, $all_categories); echo "menu_array<pre>"; print_r($menu_array); echo "</pre>"; 

У этого есть прекрасно построенное меню, подобное этому

 Array ( [9] => Array ( [10] => Array ( [15] => Array ( [16] => Array ( ) ) [17] => Array ( ) ) [12] => Array ( ) ) [11] => Array ( [13] => Array ( ) ) ) 

Моя проблема теперь в том, что я не понимаю, как выполнить сортировку в функции create_array с помощью sort_order а также получить способ извлечения имени category_name из create_array функции create_array .

EDIT: Спасибо @ user3091574 Я раньше сортировал по parent_category_id по какой-то другой причине, теперь, чтобы сделать это простым, принимая ваше предложение, теперь я хочу получить имя category_name и построить <ul> из него! какие-либо предложения?

EDIT-2 Я нашел решение для создания меню навигации по адресу https://stackoverflow.com/a/3380296/1528701

для сортировки:

добавить запрос по sort_order DESC в ваш запрос

Для добавления

 function create_array($number, $data) { $result = array(); foreach ($data as $row) { if ($row['parent_category_id'] == $number) { $result[$row['category_id']]['category_name']=$row['category_name']; $result[$row['category_id']]['id']= create_array($row['category_id'], $data); } } return $result; }