PHP数组问题

现在有一个二维数组是这样的:
$arr=array(
array('menuid'=>1,'nametitle'=>'积分配置'),
array('menuid'=>1,'nametitle'=>'关键词维护'),
array('menuid'=>2,'nametitle'=>'图文素材'),
array('menuid'=>2,'nametitle'=>'关注回复'),
array('menuid'=>2,'nametitle'=>'智能回复'),
array('menuid'=>2,'nametitle'=>'自定义回复'),
array('menuid'=>2,'nametitle'=>'粉丝管理')
);
想要获得一个新的数组是这样的:
$new_arr=array(
array(
0=>'积分配置',
2=>'关键词维护',
),
array(
0=>'图文素材',
1=>'关注回复',
2=>'智能回复',
3=>'粉丝回复',
)
)
也就是按照menuid重新组合一个二维数组。各位有什么好的办法?不能用遍历哦!或者说,除了遍历还有没有其他办法
---update---有人说我只是想让人帮写代码,也是醉了,本来这题是我帮别人问的,他要求是不能用for或者foreach,考虑到集思广益,也就没说,我自己也想出了几种循环的方法,上来提问只是想看看是否有其他更好方法而已,可能是我表达不好吧~下面有回答说sf是帮人解决bug的,不是帮人做作业的。难道bug就不可能是作业?难道我提这样的问题想看看更多的解决方法就是写作业?还真有点不可理喻耶~
莫回无
浏览 331回答 2
2回答

阿晨1998

你最开始的问题肯定问错了。不遍历是不可能的。你总得审查每一个元素对吧。后来的问题,不用for和foreach,钻这个空子还不简单?利用数组内置函数,见不到for也能搞遍历是分分钟的事情:$r=[];array_walk($arr,function($item,$key)use(&$r){//实际上这一行等效于:foreach($arras$item)$r[$item['menuid']][]=$item['nametitle'];});ksort($r);//排序数组的key,加这个可以应对menuid不按顺序出现的情况$r=array_slice($r,0);//将数组的key全部消灭并还原为0...n-1,这是你题目预期结果的要求
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript