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

WBOY
Freigeben: 2016-06-23 13:16:03
Original
911 Leute haben es durchsucht


原数组

        $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',            ),        );
Nach dem Login kopieren


假设我们把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',            ),        );
Nach dem Login kopieren



我的做法如下,数据比较多时效率不高! 请高手提供更好的方法:
        //先排序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);
Nach dem Login kopieren


回复讨论(解决方案)

这样不行吗

foreach($data as $r) {  $id[] = $r['id'];  $title[] = $r['title'];  $time[] = $r['time'];}array_multisort($id, $title, $time, $data);print_r($data);
Nach dem Login kopieren
Nach dem Login kopieren

这样不行吗

foreach($data as $r) {  $id[] = $r['id'];  $title[] = $r['title'];  $time[] = $r['time'];}array_multisort($id, $title, $time, $data);print_r($data);
Nach dem Login kopieren
Nach dem Login kopieren



这种得不到结果。主要排序是title,time(只是需要将id相同的放在一起)

//输出最终结果
$result = call_user_func_array('array_merge', $tem);

我来学习一下

土豪村长兄么

暂时想法和你一样

http://www.9958.pw/post/php_array_multi_sort

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