За последние 24 часа нас посетили 53100 программистов и 1765 роботов. Сейчас ищут 1195 программистов ...

Формирование массива из БД (MS SQL)

Тема в разделе "Прочие вопросы по PHP", создана пользователем contrafact, 10 июл 2015.

  1. contrafact

    contrafact Новичок

    С нами с:
    10 июл 2015
    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте.

    Есть следующая задача. На входе запрос к БД (MS SQL), выбирающий нужные данные. Необходимо сформировать массив (или массив массивов, здесь я плаваю) и передать его в другую функцию в качестве переменной для построения иерархического списка. Сама функция построения дерева есть, написана не мной, поэтому вопрос не о ней.

    Запрос следующего вида:
    Код (PHP):
    1. 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):
    1. $glhl_array = array(
    2.     'GP_NAME1' => array (
    3.         'TASK_NAME1' => array (
    4.             'MAIN_ACTION_NAME' => null,
    5.             'MAIN_ACTION_NAME' =>  null,
    6.             'MAIN_ACTION_NAME'  =>  null,
    7.         ),
    8.         'TASK_NAME2' => array (
    9.             'MAIN_ACTION_NAME' => null,
    10.             'MAIN_ACTION_NAME' =>  null,
    11.             'MAIN_ACTION_NAME'  =>  null,
    12.         ),
    13.     'GP_NAME2' => array (
    14.         'TASK_NAME3' => array (
    15.             'MAIN_ACTION_NAME' => null,
    16.             'MAIN_ACTION_NAME' =>  null,
    17.             'MAIN_ACTION_NAME'  =>  null,
    18.         ),
    19.         'TASK_NAME4' => array (
    20.             'MAIN_ACTION_NAME' => null,
    21.             'MAIN_ACTION_NAME' =>  null,
    22.             'MAIN_ACTION_NAME'  =>  null,
    23.         ),
    24. );
    Количество элементов (родителей и деток) в готовом списке не больше тысячи, если это важно.
    По причине того, что сам список строится другой функцией, верстку я не привожу. Но если она все-таки нужна, скажите.

    Да, вы будете правы, если скажете, что в интернете полно примеров построения таких массивов с помощью рекурсивной функции, но я и браться не знаю с какой стороны.
    Возможно, я указал не всю нужную для ответа информацию, если что дайте знать.

    Большое спасибо тем, кто отзовется.