PHP不递归实现无限的实例共享类。
没有递归的两个树形数组运算函数复制代码代码如下所示:
*创建父树树数组
*参数
* AR数组,由邻接表组织的数据
*作为id数组中的主键或键连接。
*作为$键数组下标关联中的父键或键。
*返回多维数组
**
功能find_parent($ ar,$id = 'id',PID = 'pid美元){
foreach(AR美元美元美元美元T V V){ } } { $id = $ V;
foreach($ T $ K = $项){
如果(项目{ $ } }){
如果(!isset($ T { } } { $项美元{ 'parent PID'} { } } { $美元项目PID))
$ T { $ { } } {美元项目ID 'parent} { } } { $美元项目PID = $ T { } } { $ PID美元项目;
}
}
返回$;
}
*创建子节点的树阵
*参数
* AR数组,由邻接表组织的数据
*作为id数组中的主键或键连接。
*作为$键数组下标关联中的父键或键。
*返回多维数组
**
功能find_child($ ar,$id = 'id',PID = 'pid美元){
foreach(AR美元美元美元美元T V V){ } } { $id = $ V;
foreach($ T $ K = $项){
如果(项目{ $ } }){
$ T { $ { } } {美元项目PID'孩子'} { } } { $美元项目ID = $ T { $ K };
}
}
返回$;
}
使用的例子:
复制代码代码如下所示:
数据=数组(
阵列('id' = > 1,'parent= > 0,'name' = > 'grandfather),
阵列('id' = > 2,'parent= > 1,'name' = >爸爸),
阵列('id' = > 3,'parent= > 1,'name' = >叔叔),
阵列('id' = > 4,'parent= > 2,'name' = > 'themselves),
阵列('id' = > 5,'parent= > 4,'name' = >孩子),
);
P = find_parent($数据,'id','parent);
C = find_child美元(美元数据,'id','parent);
实施效果:
复制代码代码如下所示:
阵列
(
{ 1 }数组
(
{ 1
{父} > > 0
{祖父
{子数组
(
{ 2 }数组
(
{ 2
{父} > > 1
{父}
{子数组
(
{ 4 }数组
(
{ 4
{父} > > 2
{我自己
{子数组
(
{ 5 } = >阵列
(
{ 5
{父} > > 4
{儿子
)
)
)
)
)
{ 3 }数组
(
{ 3
{父} > > 1
{叔叔的名字
)
)
)
{ 2 }数组
(
{ 2
{父} > > 1
{父}
{子数组
(
{ 4 }数组
(
{ 4
{父} > > 2
{我自己
{子数组
(
{ 5 }数组
(
{ 5
{父} > > 4
{儿子
)
)
)
)
)
{ 3 }数组
(
{ 3
{父} > > 1
{叔叔的名字
)
{ 4 }数组
(
{ 4
{父} > > 2
{我自己
{子数组
(
{ 5 }数组
(
{ 5
{父} > > 4
{儿子
)
)
)
{ 5 } = >阵列
(
{ 5
{父} > > 4
{儿子
)
)