Здравствуйте. Имеется БД PostgreSQL. Результатом довольно хитрого запроса из неё делается выборка, в результате получается примерно такая таблица: Сам запрос: PHP: $res = pg_query ("SELECT DISTINCT struc_usl.id_usl, u.naz AS naz_u, u.nom AS nom_u, u.gr_id as id_gr_u, g.idp AS korn_g_id, g.naz AS naz_g, g.npp, p.naz AS korn_g_naz, b.naz AS naz_b FROM isp.struc_usl LEFT JOIN (SELECT * FROM uslugi.usl_sp) AS u ON struc_usl.id_usl = u.id LEFT JOIN (SELECT * FROM uslugi.grusl) AS g ON u.gr_id = g.id LEFT JOIN (SELECT * FROM uslugi.grusl) AS p ON p.id = g.idp LEFT JOIN (SELECT * FROM uslugi.doc_blanks WHERE doc_blanks.naz = 'Регламент' AND doc_blanks.docblank is not null) AS b ON u.id = b.id_usl WHERE u.gr_id !=121 AND u.gr_id !=158 AND u.gr_id !=169 ORDER BY npp, nom_u"); $arr = pg_fetch_all ($res); id_usl - id услуги; naz_u - название услуги; nom_u - краткий код услуги; id_gr_u - id группы услуг; korn_g_id - id корневой группы услуг (если null значит корневой для этой услуги является группа id_gr_u); naz_g - имя группы услуг; korn_g_naz - имя корневой группы услуг; naz_b, npp - в данной задаче не потребуются. Необходимо построить дерево, чтобы, исходя из таблицы в примере, получилось примерно следующее: HTML: Группа услуг 1 УСЛ-01 Услуга 01 УСЛ-02 Услуга 02 УСЛ-03 Услуга 03 УСЛ-04 Услуга 04 Группа услуг 2 Группа услуг 3 УСЛ-05 Услуга 05 УСЛ-06 Услуга 06 УСЛ-07 Услуга 07 Группа услуг 4 УСЛ-08 Услуга 08 УСЛ-09 Услуга 09 УСЛ-10 Услуга 10 В разборе массивов не силён, да и вообще сам не программист. А сделать надо... Прошу помощи в написании нужного кода.
Не знаю если правильно работает, но вот на скорую руку PHP: <!DOCTYPE html> <html> <head> <title></title> <style type="text/css">ul, li {list-style-type: none; }</style> </head> <body> <?php $arr = include 'var_export.txt'; $result = array(); foreach ($arr as $row) { $title = $row['nom_u'].' '.$row['naz_u']; if(empty($row['korn_g_naz'])) { $result[trim($row['naz_g'])]['list'][] = $title; } else { $result[trim($row['naz_g'])]['sub'][trim($row['korn_g_naz'])]['list'][] = $title; } } echo "<ul>"; foreach ($result as $key0 => $value0) { echo "<li>".$key0."</li>"; if (isset($value0['list'])) { echo "<li><ul>"; foreach ($value0['list'] as $key1 => $value1) { echo "<li>".$value1."<li>"; } echo "</ul></li>"; } if (isset($value0['sub'])) { echo "<li><ul>"; foreach ($value0['sub'] as $key2 => $value2) { if (is_array($value2['list'])) { echo "<li>".$key2."</li>"; echo "<li><ul>"; foreach ($value2['list'] as $key3 => $value3) { echo "<li>".$value3."</li>"; } echo "</ul></li>"; } } echo "</ul></li>"; } } echo "</ul>"; ?> </body> </html> Во славу ЦИКЛАМ!!!