手机
当前位置:查字典教程网 >编程开发 >php教程 >PHP不用递归实现无限分级的例子分享
PHP不用递归实现无限分级的例子分享
摘要:两个不用递归的树形数组操作函数复制代码代码如下:/***创建父节点树形数组*参数*$ar数组,邻接列表方式组织的数据*$id数组中作为主键的...

两个不用递归的树形数组操作函数

复制代码 代码如下:

/**

* 创建父节点树形数组

* 参数

* $ar 数组,邻接列表方式组织的数据

* $id 数组中作为主键的下标或关联键名

* $pid 数组中作为父键的下标或关联键名

* 返回 多维数组

**/

function find_parent($ar, $id='id', $pid='pid') {

foreach($ar as $v) $t[$v[$id]] = $v;

foreach ($t as $k => $item){

if( $item[$pid] ){

if( ! isset($t[$item[$pid]]['parent'][$item[$pid]]) )

$t[$item[$id]]['parent'][$item[$pid]] =& $t[$item[$pid]];

}

}

return $t;

}

/**

* 创建子节点树形数组

* 参数

* $ar 数组,邻接列表方式组织的数据

* $id 数组中作为主键的下标或关联键名

* $pid 数组中作为父键的下标或关联键名

* 返回 多维数组

**/

function find_child($ar, $id='id', $pid='pid') {

foreach($ar as $v) $t[$v[$id]] = $v;

foreach ($t as $k => $item){

if( $item[$pid] ) {

$t[$item[$pid]]['child'][$item[$id]] =& $t[$k];

}

}

return $t;

}

使用例子:

复制代码 代码如下:

$data = array(

array('ID'=>1, 'PARENT'=>0, 'NAME'=>'祖父'),

array('ID'=>2, 'PARENT'=>1, 'NAME'=>'父亲'),

array('ID'=>3, 'PARENT'=>1, 'NAME'=>'叔伯'),

array('ID'=>4, 'PARENT'=>2, 'NAME'=>'自己'),

array('ID'=>5, 'PARENT'=>4, 'NAME'=>'儿子'),

);

$p = find_parent($data, 'ID', 'PARENT');

$c = find_child($data, 'ID', 'PARENT');

执行效果:

复制代码 代码如下:

Array

(

[1] => Array

(

[ID] => 1

[PARENT] => 0

[NAME] => 祖父

[child] => Array

(

[2] => Array

(

[ID] => 2

[PARENT] => 1

[NAME] => 父亲

[child] => Array

(

[4] => Array

(

[ID] => 4

[PARENT] => 2

[NAME] => 自己

[child] => Array

(

[5] => Array

(

[ID] => 5

[PARENT] => 4

[NAME] => 儿子

)

)

)

)

)

[3] => Array

(

[ID] => 3

[PARENT] => 1

[NAME] => 叔伯

)

)

)

[2] => Array

(

[ID] => 2

[PARENT] => 1

[NAME] => 父亲

[child] => Array

(

[4] => Array

(

[ID] => 4

[PARENT] => 2

[NAME] => 自己

[child] => Array

(

[5] => Array

(

[ID] => 5

[PARENT] => 4

[NAME] => 儿子

)

)

)

)

)

[3] => Array

(

[ID] => 3

[PARENT] => 1

[NAME] => 叔伯

)

[4] => Array

(

[ID] => 4

[PARENT] => 2

[NAME] => 自己

[child] => Array

(

[5] => Array

(

[ID] => 5

[PARENT] => 4

[NAME] => 儿子

)

)

)

[5] => Array

(

[ID] => 5

[PARENT] => 4

[NAME] => 儿子

)

)

【PHP不用递归实现无限分级的例子分享】相关文章:

PHP实现分页的一个示例

PHP生成器简单实例

PHP实现远程下载文件到本地

PHP中preg_match函数正则匹配的字符串长度问题

一个php作的文本留言本的例子(五)

使用函数递归实现基于php和MySQL的动态树型菜单

PHP传参之传值与传址的区别

PHP中实现图片的锐化

php实现的IMEI限制的短信验证码发送类

多文件上传的例子

精品推荐
分类导航