解决方案 »

  1.   

    $a = array(1,2,2,3,1,2,3,1,1);
    $st = array(1 => 0);
    $d = 1;
    foreach($a as $v) {
      @$st[$v]++;
      if($v >= $d) {
        $d = $v;
      }else{
        while($v < $d) {
          unset($st[$d--]);
        }
      }
      $r[] = join('.', $st);
    }
    print_r($r); Array
    (
        [0] => 1
        [1] => 1.1
        [2] => 1.2
        [3] => 1.2.1
        [4] => 2
        [5] => 2.1
        [6] => 2.1.1
        [7] => 3
        [8] => 4
    )
      

  2.   

    $a = array(1,2,2,3,1,2,3,1,1); 表示的是节点所在的层次
    $st = array(1 => 0); 存储每层当前的序号
    $d 表示当前的层次