我一直在试图解决这个问题,但是我什么都没走,希望有人可以救我。
我的问题是我正在使用邻接列表数据模型在mysql中生成我的层次结构数据。我可以将表(见下文)检索到多维数组中,并且每个项目都具有关联数组。我想要做的就是一旦得到这个数组,我想得到另一个数组,其所有节点(子,孙等)都位于父ID(包括父项)下。我只是无法锻炼如何在其中编写代码的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
我可以使用此代码将所有行检索到与此相关的数组中。
$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
)
)
有了这些结果,我想用一个ID将其过滤掉。
举例来说,我想要便携式电子设备下每个节点的ID为3的关联数组。(使用ID作为代码)
它将返回一个包含ID为行的数组:
3便携式电子产品(必须包括选定的母体)
7 Mp3播放器(儿童)
8个CD播放器(儿童)
9 2路收音机(儿童)
10 Flash(大孩子)
如果Flash有孩子,它将也返回那些孩子。
因此,最终结果将返回与上面的数组类似的数组,但是仅包含那些项。
请注意:我没有使用创建树结构的多维数组的函数(已经有解决方案)。我想构建一个函数:fetch_recursive($
id)来接收ID并返回其中的所有项目该级别以及以下级别等
希望这可以帮助
提前致谢