PHP树-不需要递归的实现方法
PHP树-不需要递归的实现方法
/** *创建父节点树形数组 *参数 *$ar数组,邻接列表方式组织的数据 *$id数组中作为主键的下标或关联键名 *$pid数组中作为父键的下标或关联键名 *返回多维数组 **/ functionfind_parent($ar,$id='id',$pid='pid'){ foreach($aras$v)$t[$v[$id]]=$v; foreach($tas$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数组中作为父键的下标或关联键名 *返回多维数组 **/ functionfind_child($ar,$id='id',$pid='pid'){ foreach($aras$v)$t[$v[$id]]=$v; foreach($tas$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'); Print_r($c);
执行效果:
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树-不需要递归的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。