1.示例1
<?php
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'][] =&$t[$k];
       unset($t[$k]);
    }
  }
  return $t;
}
$data = array(
array('ID'=>1,'PARENT'=>0,'NAME'=>'kobe'),
array('ID'=>2,'PARENT'=>0,'NAME'=>'jama'),
array('ID'=>3,'PARENT'=>1,'NAME'=>'kobe1'),
array('ID'=>4,'PARENT'=>2,'NAME'=>'jama1'),
array('ID'=>5,'PARENT'=>0,'NAME'=>'lizhi'),
array('ID'=>6,'PARENT'=>1,'NAME'=>'kobe2'),
);$c = find_child($data, 'ID', 'PARENT');
echo '<pre>';
print_r($c);
?>
2.示例2
<?phpfunction 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'][] =&$t[$k];
       unset($t[$k]);
    }
  }
  return $t;
}
$data = array(
array('ID'=>1,'PARENT'=>0,'NAME'=>'kobe'),
array('ID'=>2,'PARENT'=>0,'NAME'=>'jama'),
array('ID'=>3,'PARENT'=>1,'NAME'=>'kobe1'),
array('ID'=>4,'PARENT'=>2,'NAME'=>'jama1'),
array('ID'=>5,'PARENT'=>0,'NAME'=>'lizhi'),
array('ID'=>6,'PARENT'=>1,'NAME'=>'kobe2'),
);$c = find_child($data, 'ID', 'PARENT');
echo '<pre>';
print_r($c);
?>

解决方案 »

  1.   


    $arr = array(
    1=>array('id'=>'1','name'=>'1','pid'=>'0'),
    2=>array('id'=>'2','name'=>'2','pid'=>'0'),
    3=>array('id'=>'3','name'=>'11','pid'=>'1'),
    4=>array('id'=>'4','name'=>'22','pid'=>'2'),
    );
    function tree($arr){
    $t = array();
    foreach($arr as $v){
    if (isset($arr[$v['pid']])){
    $arr[$v['pid']]['child'][] = &$arr[$v['id']];
    }else{
    $t[] = &$arr[$v['id']];
    }
    }
    return $t;
    }
    echo '<pre>';print_r(tree($arr));