Heim > Backend-Entwicklung > PHP-Tutorial > 请问如何将多维数组转换为二维数组?

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

WBOY
Freigeben: 2016-06-23 13:51:16
Original
1100 Leute haben es durchsucht

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

重新组装一次就可以。

进行数组的重新拼接。

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));
Nach dem Login kopieren
Array(
Nach dem Login kopieren



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

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

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"    }  }}
Nach dem Login kopieren

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

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage