/*
  如何把$a转换成$b的格式
*/
 
$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,
    
)
);  /*
  如何把$a转换成$b的格式
*/  $b = array(
     0=>array('id'=>1,'name'=>"AA1",'parent'=>0),
     1=>array('id'=>2,'name'=>"BB1",'parent'=>0),
     2=>array('id'=>3,'name'=>"CC" ,'parent'=>0),
     3=>array('id'=>4,'name'=>"dd1",'parent'=>0),
     4=>array('id'=>5,'name'=>"dd2",'parent'=>0),
     5=>array('id'=>6,'name'=>"BB2",'parent'=>0),
     6=>array('id'=>7,'name'=>"AA2",'parent'=>0),
  );
         
 php tree 

解决方案 »

  1.   

    $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
            ))