php - 对 PHP 数组进行排序

标签 php arrays sorting

我已经在这个网站和其他网站上搜索答案两个多小时了,但找不到似乎有效的排序功能。

这是我的代码:

<?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/

相关文章:

php - PHP中的重复命名空间?

javascript - 我可以移动两个文件夹的文件吗? Dropzone.js

Ruby:如何将变量设置为 0,或者如果已经设置,则递增 1

arrays - 如何在 Julia 中交错数组

javascript - 在具有随机起始索引的数组中选择 4 个值

javascript - 如何为List.js编写排序函数?

php - MySql 获取超过 7 天的记录 (Varchar)

c++ - 数组下标位置加1

javascript - 通过排序插件停止对行进行排序

php - 将字符串转换为 mysql 日期的最佳方法是什么?