Я пытался понять это, но я ничего не получил. Надеюсь, кто-то может прийти мне на помощь.
Моя проблема в том, что я использую модель данных списка смежности для создания данных иерархии в mysql. Я могу получить таблицу (, см. ниже ), в многомерный массив с ассоциативным массивом для каждого элемента. Что я хочу сделать, так это как только я получу этот массив, я хочу получить другой массив со всеми узлами (, дочерними, внуками и т. д. )под родительским идентификатором (, включая родительский элемент ). Я просто могу не тренируюсь, как кодировать tihs в php.
В MySQL моя таблица выглядит так:
id name parent_id
1 Electronics 0
2 Televisions 1
3 Portable Electronics 1
4 Tube 2
5 LCD 2
6 Plasma 2
7 Mp3 Players 3
8 CD Players 3
9 2 Way Radios 3
10 Flash 7
Я могу извлечь все строки с этим кодом в ассоциативный массив с помощью this.
$r = mysql_query("SELECT * FROM test ");
$data = array();
while($row = mysql_fetch_assoc($r)) {
$data[] = $row;
}
Получает результаты:
Array
(
[0] => Array
(
[id] => 1
[name] => Electronics
[parent_id] => 0
)
[1] => Array
(
[id] => 2
[name] => Televisions
[parent_id] => 1
)
[2] => Array
(
[id] => 3
[name] => Portable Electronics
[parent_id] => 1
)
[3] => Array
(
[id] => 4
[name] => Tube
[parent_id] => 2
)
[4] => Array
(
[id] => 5
[name] => LCD
[parent_id] => 2
)
[5] => Array
(
[id] => 6
[name] => Plasma
[parent_id] => 2
)
[6] => Array
(
[id] => 7
[name] => Mp3 Players
[parent_id] => 3
)
[7] => Array
(
[id] => 8
[name] => CD Players
[parent_id] => 3
)
[8] => Array
(
[id] => 9
[name] => 2 Way Radios
[parent_id] => 3
)
[9] => Array
(
[id] => 10
[name] => Flash
[parent_id] => 7
)
)
С этим результатом я хочу отфильтровать его с помощью идентификатора.
Скажем, например, мне нужен ассоциативный массив каждого узла в Portable Electronics с идентификатором 3.(Использовать идентификатор для кода)
Он вернет массив строк с идентификаторами :
если бы у Флэша были дети, он бы их тоже вернул.
Таким образом, конечный результат вернет массив, подобный приведенному выше, но только с этими элементами.
Обратите внимание :Мне не нужна функция, которая создает многомерный массив древовидной структуры (. Уже есть решение для этого ). Я хочу построить функцию :fetch _рекурсивную ($id )который получает идентификатор и возвращает все элементы на этом уровне и на уровнях ниже и т. д. и т. д.
Надеюсь, это поможет
Заранее спасибо