我已经在这个网站和其他网站上搜索答案两个多小时了,但找不到似乎有效的排序功能。
这是我的代码:
<?php
{
$ratingsArrayCounter = 0;
$nrows = mysql_num_rows($result);
$ratingsArray = array();
if ($nrows > 0){
for ($i=0; $i < $nrows; $i++) {
$row = mysql_fetch_object($result);
$ratingsArray[$i]->autoID=$row->autoID;
$ratingsArray[$i]->awareness=$row->awareness;
$ratingsArray[$i]->performance=$row->performance;
$ratingsArray[$i]->attendance=$row->attendance;
$ratingsArray[$i]->attention=$row->attention;
$ratingsArray[$i]->knowledge=$row->knowledge;
$ratingsArray[$i]->ratingsAverage = rand(0, 100);
$ratingsArrayCounter++;
}
}
function sortByOrder($a, $b) {
return $a['ratingsAverage'] - $b['ratingsAverage'];
}
usort($ratingsArray, 'sortByOrder')
?>
输出未排序。
提前致谢!
最佳答案
不好
function sortByOrder($a, $b) {
return $a['ratingsAverage'] - $b['ratingsAverage'];
}
好
function sortByOrder($a, $b) {
return $a->ratingsAverage - $b->ratingsAverage;
}
附注如果您在尝试使用数组等对象时没有看到错误,请打开/打开错误报告并确保显示错误(如果您不确定如何显示错误,请进行搜索,这超出了本问题的范围)。
编辑对于 float ,使用更常见的 if-elseif-else
模式进行 usort()
回调。无法使用 a - b
示例,因为函数必须返回一个整数。
如 manual page for usort()
中所述:
The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.
function sortByOrder($a, $b) {
if ($a->ratingsAverage > $b->ratingsAverage) {
return 1;
} elseif ($a->ratingsAverage < $b->ratingsAverage) {
return -1;
} else {
return 0;
}
}
关于php - 对 PHP 数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16972818/