Changing the order of the array contents by performing arithmetic operations in PHP
本问题已经有最佳答案,请猛点这里访问。
我有以下数组输出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
我要计算学生的百分比,并要显示在上面的学生,他们的百分比更高。我该怎么做?我可以更改数组本身的顺序吗?请帮助
我希望数组是这样的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
使用
1 2 3 4 5 6 7 | usort($array, function($a, $b) { // This code will be executed each time two elements will be compared // If it returns a positive value, $b is greater then $a // If it returns 0, both are equal // If negative, $a is greater then $b return ($a['scored'] / $a['out_of']) <=> ($b['scored'] / $b['out_of']); }); |
有关此函数的详细信息:http://php.net/manual/en/function.usort.php所有PHP排序算法的列表:http://php.net/manual/en/array.sorting.php
请注意,usort将修改数组本身,因此不要使用
如果你的
无论如何,您可以使用下面的代码
1 2 3 4 5 6 7 8 9 10 | function sortByScore($x, $y) { return $y['per'] - $x['per']; } $new_arr = array(); foreach ($arr as $key => $value) { $per = ($value['scored'] / $value['out_of'] ) * 100; $value['per'] = $per; $new_arr[] = $value; } |
首先计算百分比,然后按百分比排序
因为你的