$array=array('0'=>array('id'=>'1','name'=>'队伍1','socre'=>'10','get'=>'5'),'1'=>array('id'=>'2','name'=>'队伍2','socre'=>'10','get'=>'6'),'2'=>array('id'=>'3','name'=>'队伍3','socre'=>'10','get'=>'7'),'3'=>array('id'=>'4','name'=>'队伍4','socre'=>'6','get'=>'2'));排序这个$array数组,先按照score排序,如果score相同,则按胜负关系排序。按胜负关系依然无法排序,按get(得分)排序。假设胜负关系的数组为:$wl = array('1'=>array('win'=>array(2)),'lose'=>array());表示ID为1的球队胜了ID为2的球队一次。主要的是根据$wl数组排序$array
function my_sort($a, $b)
{
$wl = array('1'=>array('win'=>array(2)),'lose'=>array());//这里你得把你的胜负数组补全,否则会出现Warning:提示
if ($a['socre'] == $b['socre']){
if((!in_array(intval($b['id']),$wl[$a['id']]['win'])) && (!in_array(intval($b['id']),$wl[$a['id']]['lose']))){
return $a['get']>$b['get']? -1 : 1;
}
if(in_array(intval($b['id']),$wl[$a['id']]['win'])){
return -1;
}
if(in_array(intval($b['id']),$wl[$a['id']]['lose'])){
return 1;
}
}
return ($a['socre'] > $b['socre']) ? -1 : 1;
} uasort($array, "my_sort");
print_r($array);
'0'=>array(
'id'=>'1',
'name'=>'队伍1',
'socre'=>'10',
'get'=>'5',
'wl'=>array(
win=>array(),
loss=>array()
)
), '1'=>array(
'id'=>'2',
'name'=>'队伍2',
'socre'=>'10',
'get'=>'6',
'wl'=>array(
win=>array(2),
loss=>array()
) ), '2'=>array(
'id'=>'3',
'name'=>'队伍3',
'socre'=>'10',
'get'=>'7',
'wl'=>array(
win=>array(),
loss=>array(1)
)
), '3'=>array(
'id'=>'4',
'name'=>'队伍4',
'socre'=>'6',
'get'=>'2',
'wl'=>array(
win=>array(),
loss=>array()
)
),
);这样行么,或者给个更好的建议好么。