Здравствуйте. Есть следующая задача. На входе запрос к БД (MS SQL), выбирающий нужные данные. Необходимо сформировать массив (или массив массивов, здесь я плаваю) и передать его в другую функцию в качестве переменной для построения иерархического списка. Сама функция построения дерева есть, написана не мной, поэтому вопрос не о ней. Запрос следующего вида: Код (PHP): select GP_ID, GP_NAME, TASK_ID, TASK_PP_PARENT, TASK_NAME, MAIN_ACTION_ID, ID_TASK_PARENT, MAIN_ACTION_NAME from table order by GP_ID Иерархия формируется из GP_ID, TASK_ID, MAIN_ACTION_ID в указанном порядке. Остальные поля - названия и ключи, указывающие на родителя. От меня требуется создать массив следующего вида: Код (PHP): $glhl_array = array( 'GP_NAME1' => array ( 'TASK_NAME1' => array ( 'MAIN_ACTION_NAME' => null, 'MAIN_ACTION_NAME' => null, 'MAIN_ACTION_NAME' => null, ), 'TASK_NAME2' => array ( 'MAIN_ACTION_NAME' => null, 'MAIN_ACTION_NAME' => null, 'MAIN_ACTION_NAME' => null, ), 'GP_NAME2' => array ( 'TASK_NAME3' => array ( 'MAIN_ACTION_NAME' => null, 'MAIN_ACTION_NAME' => null, 'MAIN_ACTION_NAME' => null, ), 'TASK_NAME4' => array ( 'MAIN_ACTION_NAME' => null, 'MAIN_ACTION_NAME' => null, 'MAIN_ACTION_NAME' => null, ), ); Количество элементов (родителей и деток) в готовом списке не больше тысячи, если это важно. По причине того, что сам список строится другой функцией, верстку я не привожу. Но если она все-таки нужна, скажите. Да, вы будете правы, если скажете, что в интернете полно примеров построения таких массивов с помощью рекурсивной функции, но я и браться не знаю с какой стороны. Возможно, я указал не всю нужную для ответа информацию, если что дайте знать. Большое спасибо тем, кто отзовется.