<code>$arr = Array( Array ( 'department' => '雅典娜', 'sign' => 0, 'time' => '2015年06月01日', 'surname' => '星史' ), Array ( 'department' => '雅典娜', 'sign' => 0, 'time' => '2015年06月02日', 'surname' => '星史' ), Array ( 'department' => '雅典娜', 'sign' => 0, 'time' => '2015年06月03日', 'surname' => '瞬' ), Array ( 'department' => '雅典娜', 'sign' => 0, 'time' => '2015年06月03日', 'surname' => '紫龙' ));$array=array();foreach($arr as $v){ if(!isset($array[$v['surname']])){ $array[$v['surname']]['count']=1; $array[$v['surname']]['time']=$v['time']; }else{ $array[$v['surname']]['count']+=1; $array[$v['surname']]['time'].=','.$v['time']; }}print_r($array);````输出结果是</code>
‘surname’ =1本文来#源gaodai$ma#com搞$代*码*网
搞代gaodaima码
‘星史’,
‘count’=2
其它
‘surname’ => ‘瞬’ ,
‘count’=1都是1
但是这个输出默认不排序的
“`
如何把’count’总数最大排列前面呢?
回复内容:
<code>$arr = Array( Array ( 'department' => '雅典娜', 'sign' => 0, 'time' => '2015年06月01日', 'surname' => '星史' ), Array ( 'department' => '雅典娜', 'sign' => 0, 'time' => '2015年06月02日', 'surname' => '星史' ), Array ( 'department' => '雅典娜', 'sign' => 0, 'time' => '2015年06月03日', 'surname' => '瞬' ), Array ( 'department' => '雅典娜', 'sign' => 0, 'time' => '2015年06月03日', 'surname' => '紫龙' ));$array=array();foreach($arr as $v){ if(!isset($array[$v['surname']])){ $array[$v['surname']]['count']=1; $array[$v['surname']]['time']=$v['time']; }else{ $array[$v['surname']]['count']+=1; $array[$v['surname']]['time'].=','.$v['time']; }}print_r($array);````输出结果是</code>
‘surname’ = ‘星史’,
‘count’=2
其它
‘surname’ => ‘瞬’ ,
‘count’=1都是1
但是这个输出默认不排序的
“`
如何把’count’总数最大排列前面呢?
使用PHP的usort函数进行自定义排序
<code><?php function my_sort($a, $b){ return $a['count'] == $b['count'] ? 0 : ($a['count'] > $b['count'] ? -1 : 1); } $array = array(...); //array为您的数据数组 usort($array, 'my_sort'); print_r($array);</code>
可以写下自定义的排序
<code>php</code><code>function my_sort($a, $b) { return -($a['count'] - $b['count']);//降序 } uasort($array, "my_sort");print_r($array);</code>
两个人答案不错,可惜不能点两个采纳了~~~