PHP数组排序前3

问题描述 投票:0回答:2

这是我的输入数据:

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
     )
)

这是我编写的代码:

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

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

php arrays sorting array-multisort
2个回答
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剪切前三个元素
    $b = array_slice($a, 0, 3);
    print_r($a);

-1
投票
<?php

    $array = 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)
    );

    $sortData = array_slice($array, 0, 3);

    echo "<pre>";
    print_r($sortData);

    exit();
?>
© www.soinside.com 2019 - 2024. All rights reserved.