我正在开发一个排行榜,该排行榜可以根据分数将得分最高的人分到第一、第二和第三位。现在我正在使用一个看起来像这样的排序数组(但可以是无限长度和无限点值):
$scores = Array
(
["bob"] => 20
["Jane"] => 20
["Jill"] => 15
["John"] => 10
["Jacob"] => 5
)
我想我可以使用一个简单的切片或 block ,但我想允许平局,并忽略任何不适合前三个位置的点,如下所示:
$first = Array
(
["bob"] => 20
["Jane"] => 20
)
$second = Array
(
["Jill"] => 15
)
$third = Array
(
["John"] => 10
)
有什么想法吗?
最佳答案
$arr = array(
"Jacob" => 5,
"bob" => 20,
"Jane" => 20,
"Jill" => 15,
"John" => 10,
);
arsort($arr);
$output = array();
foreach($arr as $name=>$score)
{
$output[$score][$name] = $score;
if (count($output)>3)
{
array_pop($output);
break;
}
}
$output = array_values($output);
var_dump($output);
$first 将在 $output[0] 中,$second 将在 $output[1] 中,依此类推。代码仅限于 3 个第一位。
ps:已更新以处理并列第三的问题
关于php - 按值拆分数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9022829/