Сделал так:
while($arPRes = tep_db_fetch_array($SQL)){
if(empty($arPRes['STR_ID_PARENT'])) {
$menu[] = $arPRes;
$menu[sizeof($menu)-1]['child'] = array();
$menu_index[$arPRes['STR_ID']] = &$menu[sizeof($menu)-1];
} else {
$menu_index[$arPRes['STR_ID_PARENT']]['child'][] = $arPRes;
$menu_index[$arPRes['STR_ID']] = &$menu_index[$arPRes['STR_ID_PARENT']]['child'][sizeof($menu_index[$arPRes['STR_ID_PARENT']]['child'])-1];
}
}
foreach($menu as $key => $value) {
if($value['STR_ID'] == 10001) {
echo GetCat($value);
}
}
вроде как мои категории уже вышли в дереве, причем читабельном, дал функцию:
function GetCat($array){
$result .= '<ul>';
foreach($array as $key => $value) {
$result .= '<li>' . $value['STR_DES_TEXT'] . ', id: ' . $value['STR_ID'] . ', sub:' . $value['STR_ID_PARENT'];
if($value['child']) {
$result .= GetCat($value['child']);
}
$result .= '</li>';
}
$result .= '</ul>';
return $result;
}
Но что-то пошло не так, вот пример того что даю на функцию:
Array
(
[STR_ID] => 10001
[STR_DES_TEXT] => Легковые автомобили
[STR_ID_PARENT] =>
[STR_LEVEL] => 1
[STR_SORT] => 1
[STR_NODE_NR] => 1
[DESCENDANTS] => 1
[child] => Array
(
[0] => Array
(
[STR_ID] => 10443
[STR_DES_TEXT] => Оборудование для перевозки
[STR_ID_PARENT] => 10001
[STR_LEVEL] => 2
[STR_SORT] => 927
[STR_NODE_NR] => 443
[DESCENDANTS] => 1
)
[1] => Array
(
[STR_ID] => 10341
[STR_DES_TEXT] => Отопление / вентиляция
[STR_ID_PARENT] => 10001
[STR_LEVEL] => 2
[STR_SORT] => 890
[STR_NODE_NR] => 341
[DESCENDANTS] => 1
[child] => Array
(
[0] => Array
(
[STR_ID] => 10447
[STR_DES_TEXT] => Теплообменник
[STR_ID_PARENT] => 10341
[STR_LEVEL] => 3
[STR_SORT] => 892
[STR_NODE_NR] => 447
[DESCENDANTS] => 0
)
[1] => Array
(
[STR_ID] => 10446
[STR_DES_TEXT] => Фильтр салона
[STR_ID_PARENT] => 10341
[STR_LEVEL] => 3
[STR_SORT] => 891
[STR_NODE_NR] => 446
[DESCENDANTS] => 0
)
)
)
[2] => Array
(
[STR_ID] => 10111
[STR_DES_TEXT] => Подвеска / амортизация
[STR_ID_PARENT] => 10001
[STR_LEVEL] => 2
[STR_SORT] => 695
[STR_NODE_NR] => 111
[DESCENDANTS] => 1
[child] => Array
(
[0] => Array
(
[STR_ID] => 10471
[STR_DES_TEXT] => Подвеска амортизатора/стойка амортизатора
[STR_ID_PARENT] => 10111
[STR_LEVEL] => 3
[STR_SORT] => 699
[STR_NODE_NR] => 471
[DESCENDANTS] => 0
)
[1] => Array
(
[STR_ID] => 10481
[STR_DES_TEXT] => Стойка амортизатора / амортизатор /-составные части
[STR_ID_PARENT] => 10111
[STR_LEVEL] => 3
[STR_SORT] => 702
[STR_NODE_NR] => 481
[DESCENDANTS] => 1
)
[2] => Array
(
[STR_ID] => 10470
[STR_DES_TEXT] => Ходовая часть в сборе
[STR_ID_PARENT] => 10111
[STR_LEVEL] => 3
[STR_SORT] => 700
[STR_NODE_NR] => 470
[DESCENDANTS] => 0
)
)
)
......
Спустя 45 сек.
собственно после функции ерунду выводит
Спустя 177 сек.
все, решил, прописал
echo GetCat($value['child']);
Спустя 95 сек.
но список категорий по какой-то причине не полный