解决方案 »

  1.   

    $a = array(
      array('id' => 1, 'pid' => 0, 'text' => 'a'),
      array('id' => 2, 'pid' => 1, 'text' => 'b'),
      array('id' => 3, 'pid' => 2, 'text' => 'c'),
      array('id' => 4, 'pid' => 3, 'text' => 'd'),
    );
    list_to_tree($a);function list_to_tree($list, $pk='id', $pid = 'pid', $child = '_child', $root = 0) {
      // 创建Tree
      $tree = array();
      if(is_array($list)) {
        // 创建基于主键的数组引用
        $refer = array();
        foreach ($list as $key => $data) {
          $refer[$data[$pk]] =& $list[$key];
        }
        foreach ($list as $key => $data) {
          // 判断是否存在parent
          $parentId = $data[$pid];
          if ($root == $parentId) {
            $tree[] =& $list[$key];
          }else{
            if (isset($refer[$parentId])) {
              $parent =& $refer[$parentId];
              $parent[$child][] =& $list[$key];
            }
          }
          echo "看看是怎么加进去的 $key\n";
          print_r($tree);
        }
      }
      return $tree;
    }看看是怎么加进去的 0
    Array
    (
        [0] => Array
            (
                [id] => 1
                [pid] => 0
                [text] => a
            ))
    看看是怎么加进去的 1
    Array
    (
        [0] => Array
            (
                [id] => 1
                [pid] => 0
                [text] => a
                [_child] => Array
                    (
                        [0] => Array
                            (
                                [id] => 2
                                [pid] => 1
                                [text] => b
                            )                )        ))
    看看是怎么加进去的 2
    Array
    (
        [0] => Array
            (
                [id] => 1
                [pid] => 0
                [text] => a
                [_child] => Array
                    (
                        [0] => Array
                            (
                                [id] => 2
                                [pid] => 1
                                [text] => b
                                [_child] => Array
                                    (
                                        [0] => Array
                                            (
                                                [id] => 3
                                                [pid] => 2
                                                [text] => c
                                            )                                )                        )                )        ))
    看看是怎么加进去的 3
    Array
    (
        [0] => Array
            (
                [id] => 1
                [pid] => 0
                [text] => a
                [_child] => Array
                    (
                        [0] => Array
                            (
                                [id] => 2
                                [pid] => 1
                                [text] => b
                                [_child] => Array
                                    (
                                        [0] => Array
                                            (
                                                [id] => 3
                                                [pid] => 2
                                                [text] => c
                                                [_child] => Array
                                                    (
                                                        [0] => Array
                                                            (
                                                                [id] => 4
                                                                [pid] => 3
                                                                [text] => d
                                                            )                                                )                                        )                                )                        )                )        ))