Как я могу выбрать категории в дереве до 4 уровней

Я пытаюсь создать двухмерный массив всех категорий в иерархии / дереве.

Таким образом, родитель на первом месте, затем его подкатегории, затем категории 3-го уровня, а затем 4-й уровень.

У меня есть таблица с такими записями

cc_id category_name parent_id level 1 general 0 1 2 Books 1 2 3 Magazines 1 2 4 English Book 2 3 5 Love Story 4 4 

Я хочу, чтобы результат

 Array ( [0] => Array ( [cc_id] => 1 [parent_id] => 0 [category_name] => General [level] => 1 ) [1] => Array ( [cc_id] => 2 [parent_id] => 1 [category_name] => Books [level] => 2 ) [2] => Array ( [cc_id] => 4 [parent_id] => 2 [category_name] => English Book [level] => 3 ) [3] => Array ( [cc_id] => 4 [parent_id] => 3 [category_name] => Love Story [level] => 4 ) [4] => Array ( [cc_id] => 3 [parent_id] => 1 [category_name] => Magazine [level] => 2 ) ) 

Я могу добиться этого, если я могу комбинировать html и php-код на одной странице. Но я использую структуру MVC, поэтому это мое требование. Я создаю массив во вложенном порядке. Потому что я не могу использовать условия else на моей странице просмотра.

То, что я пытаюсь в моем файле controller / lib,

  $result = $DB->query("SELECT * FROM " . DB_PREFIX . "classified_categoies WHERE is_publish=1"); //------------------------------------------------ // Check if resultset contains any rows //------------------------------------------------ if ($DB->num_rows($result)) { $i = 0; //------------------------------------------------ // Fetch resultset //------------------------------------------------ while( $obj = $DB->fetch_object($result) ) { //------------------------------------------------ // Set values //------------------------------------------------ if($obj->parent_id==0 and $obj->level==1) { $entries_obj[$i]['category_id'] = $obj->cc_id; $entries_obj[$i]['parent_id'] = $obj->parent_id; $entries_obj[$i]['category_name'] = $obj->category_name; $entries_obj[$i]['level'] = $obj->level; $i++; } $result2 = $DB->query("SELECT * FROM " . DB_PREFIX . "classified_categoies WHERE is_publish=1 AND parent_id=".$obj->cc_id." order by level asc"); if ($DB->num_rows($result)) { while( $obj2 = $DB->fetch_object($result2) ) { if($obj->level==2) { $entries_obj[$i]['category_id'] = $obj2->cc_id; $entries_obj[$i]['parent_id'] = $obj2->parent_id; $entries_obj[$i]['category_name'] = $obj2->category_name; $entries_obj[$i]['level'] = $obj2->level; $i++; } } } } 

Но, делая это, я могу получить до 2-х категорий. Кажется, используя вышеприведенную логику, я должен написать 4 запроса. Там нет никакого эффективного способа, который вы, люди, можете предложить.

В общем, это должно быть так

  Genaral Books English books Love Story Magazines 

Но я хочу вывод в двухмерном массиве.

Solutions Collecting From Web of "Как я могу выбрать категории в дереве до 4 уровней"