[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод определенной ветки дерева
IPnex
Приветствую!
Есть такой массив:

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
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.