您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP多维数组多字段排序分组,处理的数据比较多,望高手解决

2024/3/9 13:25:20发布33次查看
原数组 $data = array( 0 => array( 'id' => '510851539496070', 'name' => 'a', 'title' => '108a', 'time' => '1389230133', ), 1 => array( 'id' => '510851539496070', 'name' => 'a', 'title' => '108a', 'time' => '1389230129', ), 2 => array( 'id' => '510940988802058', 'name' => 'a', 'title' => '109a', 'time' => '1389241098', ), 3 => array( 'id' => '510868001733128', 'name' => 'a', 'title' => '109a', 'time' => '1389230169', ), 4 => array( 'id' => '510558107108314', 'name' => 'a', 'title' => '132a', 'time' => '1389191699', ), 5 => array( 'id' => '509763928740655', 'name' => 'a', 'title' => '136a', 'time' => '1389225520', ), 6 => array( 'id' => '509763928740655', 'name' => 'a', 'title' => '143a', 'time' => '1389225520', ), 7 => array( 'id' => '509763928740655', 'name' => 'a', 'title' => '143a', 'time' => '1389225520', ), 8 => array( 'id' => '510851539496070', 'name' => 'a', 'title' => '245a', 'time' => '1389230129', ), 9 => array( 'id' => '510558107108314', 'name' => 'a', 'title' => '256a', 'time' => '1389191699', ), 10 => array( 'id' => '510868001733128', 'name' => 'a', 'title' => '262a', 'time' => '1389230169', ), 11 => array( 'id' => '509763928740655', 'name' => 'a', 'title' => '306a', 'time' => '1389225521', ), 12 => array( 'id' => '509763928740655', 'name' => 'a', 'title' => '306a', 'time' => '1389225520', ), 13 => array( 'id' => '509763928740655', 'name' => 'a', 'title' => '315a', 'time' => '1389225522', ), 14 => array( 'id' => '510868001733128', 'name' => 'a', 'title' => '403a', 'time' => '1389230169', ), 15 => array( 'id' => '510558107108314', 'name' => 'a', 'title' => '404a', 'time' => '1389191699', ), 16 => array( 'id' => '510558107108314', 'name' => 'a', 'title' => '404a', 'time' => '1389191699', ), 17 => array( 'id' => '510558107108314', 'name' => 'a', 'title' => '404a', 'time' => '1389191699', ), 18 => array( 'id' => '510558107108314', 'name' => 'a', 'title' => '404a', 'time' => '1389191699', ), 19 => array( 'id' => '510558107108314', 'name' => 'a', 'title' => '404a', 'time' => '1389191699', ), 20 => array( 'id' => '510558107108314', 'name' => 'b', 'title' => '40b', 'time' => '1389191699', ), );
( 假设我们把id相同的看成一个组)要求id相同的分组在一起,每个分组之间按title、time再排序
最后输出: array( 0 => array( 'id' => '510851539496070', 'name' => 'a', 'title' => '108a', 'time' => '1389230129', ), 1 => array( 'id' => '510851539496070', 'name' => 'a', 'title' => '108a', 'time' => '1389230133', ), 2 => array( 'id' => '510851539496070', 'name' => 'a', 'title' => '245a', 'time' => '1389230129', ), 3 => array( 'id' => '510868001733128', 'name' => 'a', 'title' => '109a', 'time' => '1389230169', ), 4 => array( 'id' => '510868001733128', 'name' => 'a', 'title' => '262a', 'time' => '1389230169', ), 5 => array( 'id' => '510868001733128', 'name' => 'a', 'title' => '403a', 'time' => '1389230169', ), 6 => array( 'id' => '510940988802058', 'name' => 'a', 'title' => '109a', 'time' => '1389241098', ), 7 => array( 'id' => '510558107108314', 'name' => 'a', 'title' => '132a', 'time' => '1389191699', ), 8 => array( 'id' => '510558107108314', 'name' => 'a', 'title' => '256a', 'time' => '1389191699', ), 9 => array( 'id' => '510558107108314', 'name' => 'a', 'title' => '404a', 'time' => '1389191699', ), 10 => array( 'id' => '510558107108314', 'name' => 'a', 'title' => '404a', 'time' => '1389191699', ), 11 => array( 'id' => '510558107108314', 'name' => 'a', 'title' => '404a', 'time' => '1389191699', ), 12 => array( 'id' => '510558107108314', 'name' => 'a', 'title' => '404a', 'time' => '1389191699', ), 13 => array( 'id' => '510558107108314', 'name' => 'a', 'title' => '404a', 'time' => '1389191699', ), 14 => array( 'id' => '510558107108314', 'name' => 'b', 'title' => '40b', 'time' => '1389191699', ), 15 => array( 'id' => '509763928740655', 'name' => 'a', 'title' => '136a', 'time' => '1389225520', ), 16 => array( 'id' => '509763928740655', 'name' => 'a', 'title' => '143a', 'time' => '1389225520', ), 17 => array( 'id' => '509763928740655', 'name' => 'a', 'title' => '143a', 'time' => '1389225520', ), 18 => array( 'id' => '509763928740655', 'name' => 'a', 'title' => '306a', 'time' => '1389225520', ), 19 => array( 'id' => '509763928740655', 'name' => 'a', 'title' => '306a', 'time' => '1389225521', ), 20 => array( 'id' => '509763928740655', 'name' => 'a', 'title' => '315a', 'time' => '1389225522', ), );
我的做法如下,数据比较多时效率不高! 请高手提供更好的方法: //先排序title,time foreach ($data as $key => $row) { $title[$key] = $row['title']; $time[$key] = $row['time']; } array_multisort($title, sort_asc, sort_regular, $time, sort_asc, sort_regular, $data); //相同id临时放到一起 $tem = array(); foreach ($data as $value) { $tem[$value['id']][] = $value; } //输出最终结果 $result = array(); foreach ($tem as $sub_arr) { foreach ($sub_arr as $value) { $result[] = $value; } } print_r($result);
回复讨论(解决方案) 这样不行吗 foreach($data as $r) { $id[] = $r['id']; $title[] = $r['title']; $time[] = $r['time'];}array_multisort($id, $title, $time, $data);print_r($data);

这样不行吗 foreach($data as $r) { $id[] = $r['id']; $title[] = $r['title']; $time[] = $r['time'];}array_multisort($id, $title, $time, $data);print_r($data);

这种得不到结果。主要排序是title,time(只是需要将id相同的放在一起) //输出最终结果
$result = call_user_func_array('array_merge', $tem);
我来学习一下
土豪村长兄么 暂时想法和你一样
http://www.9958.pw/post/php_array_multi_sort
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product