【发布时间】:2015-09-17 13:05:19
【问题描述】:
我有这个数组。
Array
(
[0] => Array
(
[name] => SUNDERLAND
[pts] => 2
[gd] => -4
[group] => A
)
[1] => Array
(
[name] => NEWCASTLE
[pts] => 2
[gd] => -3
[group] => C
)
[2] => Array
(
[name] => STOKE CITY
[pts] => 2
[gd] => -2
[group] => B
)
[3] => Array
(
[name] => WATFORD
[pts] => 3
[gd] => -2
[group] => A
)
[4] => Array
(
[name] => TOTTENHAM
[pts] => 3
[gd] => -1
[group] => B
)
[5] => Array
(
[name] => CHELSEA
[pts] => 4
[gd] => -5
[group] => C
)
[6] => Array
(
[name] => NORWICH
[pts] => 4
[gd] => -3
[group] => D
)
[7] => Array
(
[name] => WEST BROM
[pts] => 4
[gd] => -4
[group] => D
)
)
我必须按照某些标准对这个数组元素进行排序和分组。
在同一组中,第一个 NAME 是具有更大 pts 参数的名称(DESC by pts 参数)。 如果pts参数按gd参数顺序相同(DESC按gd参数)
同组的团队名称放在一起。
Name pts gd group
WATFORD 3 -2 A
SUNDERLAND 2 -4 A
TOTTENHAM 3 -1 B
STOKE CITY 2 -2 B
CHELSEA 4 -5 C
NEWCASTLE 2 -3 C
NORWICH 4 -3 D
WEST BROM 4 -4 D
此时我可以按 pts 和 gd 排序如下:
<?php
function sortByOrder($a, $b){
$c = $a['pts'] - $b['pts'];
$c .= $a['gd'] - $b['gd'];
return $c;
}
usort($all_teams_nf, 'sortByOrder');
foreach($all_teams_nf as $myarr){
foreach($myarr as $key => $team){
if($key!="pts" and $key!="gd" and $key!="group"){
$all_teams[] = $team;
}
}
}
$all_teams = array_reverse($all_teams);
?>
请帮助按组组合,然后按 pts 和 gd 在每个组中排序。 (在最终结果中,我需要显示组名和团队名!
A
WATFORD
SUNDERLAND
B
TOTTENHAM
STOKE CITY
C
CHELSE
NEWCASTLE
D
NORWICH
WEST BROM
【问题讨论】:
标签: php arrays sorting grouping usort