我有一个这样子的要求
我有这样子的哈希,保存着这样子的数据
class01-->0  
class02-->0
class03-->class02
class04-->calss03
class05-->class04
class06-->class03key和value表示他们的集成关系,比如class03-->class02 表示class03 继承 class02;
我想输出成这样子
class01  
class02
class03==>class02
class04==>calss03==>class02
class05==>class04==>class03==>class02
class06==>class03==>class02这样子就可以一目了然,看清楚所有类了。
请问怎么做啊。需要用到递归不。
或者不用递归,怎么实现啊急求明白帝。
在这里谢过了。100分聊表心意。

解决方案 »

  1.   

    //为便于处理,按邻接列表算法组织数据如下
    $ar = array(
     array( 'id' => 1, 'pid' => 0, 'name' => 'class01' ),   
     array( 'id' => 2, 'pid' => 0, 'name' => 'class02' ),
     array( 'id' => 3, 'pid' => 2, 'name' => 'class03' ),
     array( 'id' => 4, 'pid' => 3, 'name' => 'class04' ),
     array( 'id' => 5, 'pid' => 4, 'name' => 'class05' ),
     array( 'id' => 6, 'pid' => 3, 'name' => 'class06' ),
    );
    $t = find_parent($ar);foreach($t as $v) {
      echo $v['name'];
      while($v['parent']) {
        $v = array_pop($v['parent']);
        echo " ==> $v[name]";
      }
      echo '<br>';
    }class01
    class02
    class03 ==> class02
    class04 ==> class03 ==> class02
    class05 ==> class04 ==> class03 ==> class02
    class06 ==> class03 ==> class02函数 find_parent 的定义在 http://topic.csdn.net/u/20110728/15/eadffb68-5eb6-40d8-9ec1-2bc439f45322.html
      

  2.   

    $ar = array('class01' => 0, 'class02' => 0, 'class03' => 'class02',
                        'class04' => 'class03', 'class05' => 'class04', 'class06' => 'class03');
    $result = array();function foo($i, $k) {
       global $ar, $result;
       if (array_key_exists($k, $ar) && $ar[$k] !== 0) {
          $result[$i] .= '==>'.$ar[$k];
          foo($i, $ar[$k]);
       }
       else {
    $result[$i] .= '';
       }
    }foreach($ar as $k => $v) foo($k, $k);foreach($result as $k => $v) echo $k.$v."<br />";/*
    class01
    class02
    class03==>class02
    class04==>class03==>class02
    class05==>class04==>class03==>class02
    class06==>class03==>class02
    */
      

  3.   

    csdn果然强大,这么快就解决了