php - 按值拆分数组

标签 php arrays split

我正在开发一个排行榜,该排行榜可以根据分数将得分最高的人分到第一、第二和第三位。现在我正在使用一个看起来像这样的排序数组(但可以是无限长度和无限点值):

$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/

相关文章:

ios - fatal error : Array index out of range

php - 报告了不同的 php 版本

php - 在数据库中使用@符号

php - SQL 日志记录查询适用于 SELECT,但不适用于 INSERT 或 UPDATE

c - 如何使用 XOR 查找数组中出现次数为奇数的单个元素?

Java - 分割一个字符串,可以用竖线分隔 ("\\I")、逗号分隔 (",")、分号分隔 (";") 等

javascript - 文件 file 中未捕获的 ReferenceError : output is not defined when using jQuery $. post()

arrays - 面试题: Even and odd elements at even and odd positions (keep elements order)

r - 如何有效地将顺序变量添加到大数据框

javascript - .split() 在空格和引号处,保留引号 - Regex/Javascript