这是我的输入数据:
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
)
)
我希望它只输出排序后的数组中的前三个,但是我不知道如何实现它。任何帮助,将不胜感激!
/**
* 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;
}
$a = arraySort($data, 'grade_point', SORT_DESC);
$b = array_slice($a, 0, 3);
print_r($a);
<?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();
?>