Есть такой массив:
Array {
[0] => Array
(
[1] => пункт 1
[2] => пункт 2
[3] => пункт 3
)
[1] => Array
(
[4] => подпункт 1-1
[5] => подпункт 1-2
[6] => подпункт 1-3
)
[2] => Array
(
[7] => подпункт 2-1
)
[7] => Array
(
[8] => подподпункт 2-1-1
[9] => подподпункт 2-1-2
)
[3] => Array
(
[10] => подпункт 3-1
[11] => подпункт 3-2
)
[11] => Array
(
[12] => подподпункт 3-2-1
[13] => подподпункт 3-2-2
)
}
где индексы это id записи в таблице БД.
Из этого массива с помощью следующей функции (где $tree наш массив)
function showTreeSubcat($tree, $pid=0){
static $result = '<ul>';
if ($pid != 0) $result .= '<ul>';
foreach($tree as $id => $root){
if ($pid != $id) continue;
if (!empty($root)) {
foreach ($root as $key => $val) {
$result .= '<li>'.$val;
if (!empty($tree[$key])) showTreeSubcat($tree, $key);
$result .= '</li>';
}
}
}
$result .= '</ul>';
return $result;
}
фомируется такое дерево:
пункт 1
---подпункт 1-1
---подпункт 1-2
---подпункт 1-3
пункт 2
---подпункт 2-1
------подподпункт 2-1-1
------подподпункт 2-1-2
пункт 3
---подпункт 3-1
---подпункт 3-2
------подподпункт 3-2-1
------подподпункт 3-2-2
Собственно вопрос, как мне зная id записи, например 2, вывести только эту ветку:
---подпункт 2-1
------подподпункт 2-1-1
------подподпункт 2-1-2
Спустя 25 минут, 37 секунд (11.03.2012 - 17:27) Visman написал(а):
Попробуй вызвать так showTreeSubcat($tree, 2)
Спустя 7 минут, 6 секунд (11.03.2012 - 17:34) IPnex написал(а):
Мда, пора начать высыпаться. Спасибо большое Visman