现在有一个二维数组是这样的:$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就不可能是作业?难道我提这样的问题想看看更多的解决方法就是写作业?还真有点不可理喻耶~
2 回答
阿晨1998
TA贡献2037条经验 获得超6个赞
你最开始的问题肯定问错了。不遍历是不可能的。你总得审查每一个元素对吧。后来的问题,不用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,这是你题目预期结果的要求
添加回答
举报
0/150
提交
取消