Array
(
    [1] => Array
        (
            [id] => 1
            [name] => 世界
            [pid] => 0
            [2] => Array
                (
                    [id] => 2
                    [name] => 中国
                    [pid] => 1
                    [4] => Array
                        (
                            [id] => 4
                            [name] => 湖南
                            [pid] => 2
                        )                )            [3] => Array
                (
                    [id] => 3
                    [name] => 美国
                    [pid] => 1
                )        ))树状无限分类

解决方案 »

  1.   

    本身就是树状,有pid还不简单么?递归就行了
      

  2.   

    $a = Array(
      1 => Array(
        'id' => 1,
        'name' => '世界',
        'pid' => 0,
        2 => Array(
          'id' => 2,
          'name' => '中国',
          'pid' => 1,
          4 => Array(
            'id' => 4,
            'name' => '湖南',
            'pid' => 2,
          ),
        ),
        3 => Array(
          'id' => 3,
          'name' => '美国',
          'pid' => 1,
        ),
      ),
    );tree($a);function tree($ar) {
      if(! is_array($ar)) return;
      echo '<ul>';
      foreach($ar as $item) {
        echo "$item[id] $item[name]";
        foreach($item as $t) {
          if(is_array($t)) {
            tree(array($t));
          }
        }
      }
      echo '</ul>';
    } 1 世界
    2 中国
    4 湖南
    3 美国
    <ul>1 世界<ul>2 中国<ul>4 湖南</ul></ul><ul>3 美国</ul></ul>
      

  3.   

    给你个有趣的玩法(具体有什么用也不晓得)$a = Array(
      1 => Array(
        // 'id' => 1,
        'name' => '世界',
        // 'pid' => 0,
        2 => Array(
          // 'id' => 2,
          'name' => '中国',
          // 'pid' => 1,
          4 => Array(
            // 'id' => 4,
            'name' => '湖南',
            // 'pid' => 2,
          ),
        ),
        3 => Array(
          // 'id' => 3,
          'name' => '美国',
          // 'pid' => 1,
        ),
      ),
    );
    $awesome = new RecursiveTreeIterator(  
        new RecursiveArrayIterator($a),  
        null, null, RecursiveIteratorIterator::LEAVES_ONLY  
    );  
    foreach ($awesome as $line)  
        echo $line . PHP_EOL;  
      |-世界
      | |-中国
      |   \-湖南
        \-美国