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

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

WBOY
Release: 2016-06-23 13:51:16
Original
1099 people have browsed it

比如无限级菜单,通过递归后是一个多维数组,我想把这个多维数组转换为二维数组并重新排序后进行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));
Copy after login
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        ))
Copy after login

重新组装一次就可以。

进行数组的重新拼接。

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));
Copy after login
Array(
Copy after login



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

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

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"    }  }}
Copy after login

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

如果想要具体代码,就请贴出 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);
?>

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template