$a = array(
  0=>array(
    'categoryid'=>1,
    'name'=>"AA1",
    'parent'=>0,
    'childs'=>array(
      0=>array(
        'categoryid'=>2,
        'name'=>"BB1",
        'parent'=>1,
        'childs'=>array(
          0=>array(
            'categoryid'=>3,
            'name'=>"CC",
            'parent'=>2,
            'childs'=>array(
              0=>array(
                'categoryid'=>4,
                'name'=>"dd1",
                'parent'=>3,
              ),
              1=>array(
                'categoryid'=>5,
                'name'=>"dd2",
                'parent'=>3,
              ),
            ),
          ),
        ),
      ),
      1=>array(
        'categoryid'=>6,
        'name'=>"BB2",
        'parent'=>1,
      ),
    ),
  ),
  1=>array(
    'categoryid'=>7,
    'name'=>"AA2",
    'parent'=>0,
  )
);
function imp($tree, $children='childs') {
  $imparr = array();
  foreach($tree as $w) {
    if(isset($w[$children])) {
      $t = $w[$children];
      unset($w[$children]);
      $imparr[] = $w;
      if(is_array($t)) $imparr = array_merge($imparr, imp($t, $children));
    } else {
      $imparr[] = $w;
    }
  }
  return $imparr;
}
print_r(imp($a));Array
(
    [0] => Array
        (
            [categoryid] => 1
            [name] => AA1
            [parent] => 0
        )    [1] => Array
        (
            [categoryid] => 2
            [name] => BB1
            [parent] => 1
        )    [2] => Array
        (
            [categoryid] => 3
            [name] => CC
            [parent] => 2
        )    [3] => Array
        (
            [categoryid] => 4
            [name] => dd1
            [parent] => 3
        )    [4] => Array
        (
            [categoryid] => 5
            [name] => dd2
            [parent] => 3
        )    [5] => Array
        (
            [categoryid] => 6
            [name] => BB2
            [parent] => 1
        )    [6] => Array
        (
            [categoryid] => 7
            [name] => AA2
            [parent] => 0
        ))

解决方案 »

  1.   


    请问大哥如果数组中没有childs标识怎么办?
    递归已经把我递乱了~~我的数组:array(2) {
      ["0childs"] => array(9) {
        ["cate_id"] => string(1) "5"
        ["cate_title"] => string(12) "古剑奇谭"
        ["cate_pid"] => string(1) "0"
        ["cate_type"] => string(7) "Article"
        ["cate_type2"] => NULL
        ["cate_sort"] => string(1) "1"
        ["0childs"] => array(6) {
          ["cate_id"] => string(1) "7"
          ["cate_title"] => string(12) "百里屠苏"
          ["cate_pid"] => string(1) "5"
          ["cate_type"] => string(7) "Article"
          ["cate_type2"] => NULL
          ["cate_sort"] => string(1) "2"
        }
        ["1childs"] => array(6) {
          ["cate_id"] => string(1) "8"
          ["cate_title"] => string(6) "晴雪"
          ["cate_pid"] => string(1) "5"
          ["cate_type"] => string(7) "Article"
          ["cate_type2"] => NULL
          ["cate_sort"] => string(1) "5"
        }
        ["2childs"] => array(6) {
          ["cate_id"] => string(1) "9"
          ["cate_title"] => string(6) "少恭"
          ["cate_pid"] => string(1) "5"
          ["cate_type"] => string(7) "Article"
          ["cate_type2"] => NULL
          ["cate_sort"] => string(1) "6"
        }
      }
      ["1childs"] => array(9) {
        ["cate_id"] => string(2) "10"
        ["cate_title"] => string(12) "天龙八部"
        ["cate_pid"] => string(1) "0"
        ["cate_type"] => string(7) "Article"
        ["cate_type2"] => NULL
        ["cate_sort"] => string(1) "2"
        ["0childs"] => array(6) {
          ["cate_id"] => string(2) "11"
          ["cate_title"] => string(6) "萧峰"
          ["cate_pid"] => string(2) "10"
          ["cate_type"] => string(7) "Article"
          ["cate_type2"] => NULL
          ["cate_sort"] => string(1) "2"
        }
        ["1childs"] => array(6) {
          ["cate_id"] => string(2) "12"
          ["cate_title"] => string(6) "虚竹"
          ["cate_pid"] => string(2) "10"
          ["cate_type"] => string(7) "Article"
          ["cate_type2"] => NULL
          ["cate_sort"] => string(1) "3"
        }
        ["2childs"] => array(6) {
          ["cate_id"] => string(2) "13"
          ["cate_title"] => string(9) "慕容复"
          ["cate_pid"] => string(2) "10"
          ["cate_type"] => string(7) "Article"
          ["cate_type2"] => NULL
          ["cate_sort"] => string(1) "4"
        }
      }
    }
      

  2.   

    我擦,楼上的写错了~~还不能删除
    下面这个是我现在的。array(2) {
      [0] => array(9) {
        ["cate_id"] => string(1) "5"
        ["cate_title"] => string(12) "古剑奇谭"
        ["cate_pid"] => string(1) "0"
        ["cate_type"] => string(7) "Article"
        ["cate_type2"] => NULL
        ["cate_sort"] => string(1) "1"
        [0] => array(6) {
          ["cate_id"] => string(1) "7"
          ["cate_title"] => string(12) "百里屠苏"
          ["cate_pid"] => string(1) "5"
          ["cate_type"] => string(7) "Article"
          ["cate_type2"] => NULL
          ["cate_sort"] => string(1) "2"
        }
        [1] => array(6) {
          ["cate_id"] => string(1) "8"
          ["cate_title"] => string(6) "晴雪"
          ["cate_pid"] => string(1) "5"
          ["cate_type"] => string(7) "Article"
          ["cate_type2"] => NULL
          ["cate_sort"] => string(1) "5"
        }
        [2] => array(6) {
          ["cate_id"] => string(1) "9"
          ["cate_title"] => string(6) "少恭"
          ["cate_pid"] => string(1) "5"
          ["cate_type"] => string(7) "Article"
          ["cate_type2"] => NULL
          ["cate_sort"] => string(1) "6"
        }
      }
      [1] => array(9) {
        ["cate_id"] => string(2) "10"
        ["cate_title"] => string(12) "天龙八部"
        ["cate_pid"] => string(1) "0"
        ["cate_type"] => string(7) "Article"
        ["cate_type2"] => NULL
        ["cate_sort"] => string(1) "2"
        [0] => array(6) {
          ["cate_id"] => string(2) "11"
          ["cate_title"] => string(6) "萧峰"
          ["cate_pid"] => string(2) "10"
          ["cate_type"] => string(7) "Article"
          ["cate_type2"] => NULL
          ["cate_sort"] => string(1) "2"
        }
        [1] => array(6) {
          ["cate_id"] => string(2) "12"
          ["cate_title"] => string(6) "虚竹"
          ["cate_pid"] => string(2) "10"
          ["cate_type"] => string(7) "Article"
          ["cate_type2"] => NULL
          ["cate_sort"] => string(1) "3"
        }
        [2] => array(6) {
          ["cate_id"] => string(2) "13"
          ["cate_title"] => string(9) "慕容复"
          ["cate_pid"] => string(2) "10"
          ["cate_type"] => string(7) "Article"
          ["cate_type2"] => NULL
          ["cate_sort"] => string(1) "4"
        }
      }
    }
      

  3.   

    不一样是遍历吗?只是麻烦点,发现是数组就递归进入如果想要具体代码,就请贴出 var_export 的结果
      

  4.   

    我只看看就可以了。
    <?php
    $a=array(
    array('bbcc',array('ddd','ccc'))
    ,'aaa'
    );
    class getOneAr{
    var $b;
    function getvalue($a){
    foreach($a as $v){
    if(is_array($v)){
    $this->getvalue($v);
    }else{
    $this->b[]=$v;
    }
    }
    return $this->b;
    }
    }
    $c=new getOneAr();
    $b=$c->getvalue($a);
    var_dump($b);
    ?>