我是 php 的新手。我正在尝试对具有某些条件的多维数组进行排序,但我不知道从哪里开始。
用户数组
Array
(
[0] => Array
(
[uid] => 1
[Fname] => Kcir
[Lname] => Nayr
[wins] => 12
[scoreGuess] => 45
[totalScore] => 26
)
[1] => Array
(
[uid] => 2
[Fname] => Doe
[Lname] => John
[wins] => 12
[scoreGuess] => 35
[totalScore] => 26
)
[2] => Array
(
[uid] => 3
[Fname] => Greg
[Lname] => Cuenca
[Nickname] => Greg
[wins] => 11
[scoreGuess] => 21
[totalScore] => 26
)
[3] => Array
(
[uid] => 4
[Fname] => Kenneth
[Lname] => Agee
[wins] => 12
[scoreGuess] => 34
[totalScore] => 26
)
)
首先,我需要通过wins按降序对用户进行排序,然后如果有用户与wins绑定,则绑定用户将通过scoreGuess排序,但有一个条件。如果scoreGuess是totalScore上最接近的,那么该用户将是最高的。
例如:用户1、2和3并列获得12胜,总得分为26。
用户 1的 scoreGuess 为45
用户 2的 scoreGuess 为35
用户 4的 scoreGuess 为34
所以最高的是用户 4,因为他的 scoreGuess 最接近。
我已经尝试过此代码,但无法正常工作。
function compareUsers($a, $b)
{
if($a['wins'] > $b['wins'])
{
return -1;
}
else if ($a['wins'] == $b['wins']) {
$a_diff = (int) $a['totalScore'] - (int)$a['scoreGuess'];
$b_diff = (int) $b['totalScore'] - (int) $b['scoreGuess'];
if ( $a_diff >= 0 && $b_diff >= 0 ) {
if ( $a_diff < $b_diff ) {
return -1;
}
} else if ( $a_diff >= 0 && $b_diff < 0 ) {
return 0;
} else {
return 1;
}
}
else
{
return 1;
}
}
usort($users, "compareUsers");
慕工程0101907
aluckdog
慕勒3428872
随时随地看视频慕课网APP