Home  >  Article  >  Backend Development  >  请问如何将多维数组转换为二维数组?

请问如何将多维数组转换为二维数组?

WBOY
WBOYOriginal
2016-06-23 13:51:161079browse

比如无限级菜单,通过递归后是一个多维数组,我想把这个多维数组转换为二维数组并重新排序后进行foreach,请问这个function该如何写?


回复讨论(解决方案)

建议举例说明,这样清晰明了。

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

重新组装一次就可以。

进行数组的重新拼接。

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(



请问大哥如果数组中没有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"    }  }}

我擦,楼上的写错了~~还不能删除。。。
下面这个是我现在的。

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"    }  }}

不一样是遍历吗?只是麻烦点,发现是数组就递归进入

如果想要具体代码,就请贴出 var_export 的结果

我只看看就可以了。
$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);
?>

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn