【问题标题】:PHP Array Sorting Top 3PHP数组排序前3名
【发布时间】:2020-03-15 16:33:02
【问题描述】:

这是我的输入数据:

Array(
     [0] => Array(
          [name_id] => 1
          [name] => An
          [grade_point] => 19
     )
     [1] => Array(
          [name_id] => 3
          [name] => Sin
          [grade_point] => 22
     )
     [2] => Array(
          [name_id] => 9
          [name] => Xi
          [grade_point] => 18
     )
     [3] => Array(
          [name_id] => 6
          [name] => Ruan
          [grade_point] => 20
     )
)

这是我编写的代码:

php

$top_academic = $academic;
foreach ($top_academic as $key => $row) {

    $name_id[$key] = $row['name_id'];
    $name[$key] = $row['name'];
    $grade_point[$key] = $row['grade_point'];
)
array_multisort($grade_point, SORT_DESC, $top_akademik);

这会根据成绩对数据进行排序,因此输出如下所示:

Array(
     [0] => Array(
          [name_id] => 3
          [name] => Sin
          [grade_point] => 22
     )
     [1] => Array(
          [name_id] => 6
          [name] => Ruan
          [grade_point] => 20
     )
     [2] => Array(
          [name_id] => 1
          [name] => An
          [grade_point] => 19
     )
     [3] => Array(
          [name_id] => 9
          [name] => Xi
          [grade_point] => 18
     )
)

我希望它只输出排序数组中的前三个,但我不知道如何实现它。任何帮助将不胜感激!

【问题讨论】:

  • 可能只是array_slice() ?
  • @axhxs 尝试检查所有答案并让我们知道哪一个对您有用?

标签: php arrays sorting array-multisort


【解决方案1】:
  1. 定义排序多数组函数:
    /**
     * sort multi array
     * @param array $array
     * @param string $keys sort key's name
     * @param string $sort sort type constant:
     * @return array sorted array return
     */
    function arraySort($array, $keys, $sort = SORT_DESC)
    {
        $keysValue = [];
        foreach ($array as $k => $v) {
            $keysValue[$k] = $v[$keys];
        }
        array_multisort($keysValue, $sort, $array);
        return $array;
    }  
  1. 按键排序
    $a = arraySort($data, 'grade_point', SORT_DESC);
  1. 之后通过 array_slice 剪切前 3 个元素
    $b = array_slice($a, 0, 3);
    print_r($a);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多