php - usort比较函数似乎没有被调用

标签 php usort

我有一个包含对象的数组,我想按对象属性对数组进行排序。所以我必须使用 usort 来实现这一点。但我的数组保持未排序。所以我将一些var_dumps放入我的代码中来调试它。这是我的代码:

var_dump(count($fields));
usort($fields, function ($a, $b) {
    var_dump("A");
    return ($b->getPosition() - $a->getPosition());
});
var_dump("B");
die;

结果是这样的:int(4) string(1) "B",并且..

我希望看到 string(1) "A" 打印出来

看来 usort 函数内部没有发生任何事情。什么可以解释这种行为?我的PHP版本是7.1.21

(我已经编辑了上面的代码,但它仍然不起作用。没有记录 A,并且数组未排序)

最佳答案

usort 不适用于对象(无论如何在 PHP 7.2 中)。您需要将其转换为数组(因为它似乎是一个集合对象,它可能有一个像 toArray() 这样的方法)

关于php - usort比较函数似乎没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52084797/

相关文章:

PHP:奇怪的 usort 错误

php - 按多个字段对多维数组进行排序

PhpStorm 无法识别类中的 PDO 方法

php - 以 PHP 形式处理来自文本框和文件的输入

php - 查询未选择表中的所有行

php 对多维数组进行排序,但从 1 开始索引

php - usort - 更多参数

php - 如何使用 php 以特定顺序显示从 mysql 数据库检索的数据

php - 调用非对象上的成员函数bind_param()

php - 使用php和mysql查看表是否存在