<?php$array=array(array(1,0,'中国'),
       array(2,1,'辽宁'),
       array(3,1,'河南'),
       array(4,2,'沈阳'),
       array(5,2,'大连'),
       array(6,3,'洛阳'),
       array(7,3,'开封'),
       );
$a='';
function tree($array,$id,$pid)
{
if ($pid==0){$GLOBALS['a'] .= '中国<br>';}
for ($i=0;$i<sizeof($array);$i++)
{
if ($array[$i][1]==$id)
{
$GLOBALS['a'] .= $array[$i][2].'<br>';
tree($array,$array[$i][0],$array[$i][1]);
}
}
}
tree($array,1,0);echo $a;
?>

解决方案 »

  1.   

    返回的数据可以有多种格式,不知你需要哪种?
    一种可能的格式:
    function tree1($array,$id,$pid)
    {
    if ($pid==0){$ar[] = $array[0][2];}
    for ($i=0;$i<sizeof($array);$i++)
    {
    if ($array[$i][1]==$id)
    {
    $ar[] = $array[$i][2].'<br>';
    $obj = tree1($array,$array[$i][0],$array[$i][1]);
    if(count($obj) > 0)
    $ar[] = $obj;
    }
    }
      return $ar;
    }
    print_r(tree1($array,1,0));
      

  2.   

    $array=array(array(1,0,'中国'),
           array(2,1,'辽宁'),
           array(3,1,'河南'),
           array(4,2,'沈阳'),
           array(5,2,'大连'),
           array(6,3,'洛阳'),
           array(7,3,'开封'),
           );
           $a=new  array();
    function tree($array,$id,$pid)
    {
    if ($pid==0){$a[]="中国";}
    for ($i=0;$i<sizeof($array);$i++)
    {
    if ($array[$i][1]==$id)
    {
    $a[]=$array[$i][2].'<br>';
    tree($array,$array[$i][0],$array[$i][1]);
    }
    }
    return $a;
    }
    $arry=tree($array,1,0);
    print_r($arry);