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

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

使用foreach循环去除PHP数组中重复元素的方法如下:遍历数组,若元素已存在且当前位置不是第一个出现的位置,则删除它。举例而言,若数据库查询结果存在重复记录,可使用此方法去除,得到不含重复记录的结果。

PHP数组键值翻转方法性能对比表明:array_flip()函数在大型数组(超过100万个元素)下比for循环性能更优,耗时更短。手动翻转键值的for循环方法耗时相对较长。

多维数组排序可分为单列排序和嵌套排序。单列排序可使用array_multisort()函数按列排序;嵌套排序需要递归函数遍历数组并排序。实战案例包括按产品名称排序和按销售量和价格复合排序。

PHP中深度复制数组的方法包括:使用json_decode和json_encode进行JSON编码和解码。使用array_map和clone进行深度复制键和值的副本。使用serialize和unserialize进行序列化和反序列化。

在PHP中执行数组深度复制的最佳实践是:使用json_decode(json_encode($arr))将数组转换为JSON字符串,然后再将其转换回数组。使用unserialize(serialize($arr))将数组序列化为字符串,然后将其反序列化为新数组。使用RecursiveIteratorIterator迭代器对多维数组进行递归遍历。

PHP的array_group_by函数可根据键或闭包函数对数组中的元素分组,返回一个关联数组,其中键是组名,值是属于该组的元素数组。

PHP的array_group()函数可用于按指定键对数组进行分组,以查找重复元素。该函数通过以下步骤工作:使用key_callback指定分组键。可选地使用value_callback确定分组值。对分组元素进行计数并识别重复项。因此,array_group()函数对于查找和处理重复元素非常有用。

PHP数组合并去重算法提供了并行的解决方案,将原始数组分成小块并行处理,主进程合并块的结果去重。算法步骤:分割原始数组为均等分配的小块。并行处理每个块去重。合并块结果并再次去重。
