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

usort comparison function does not appear to be called

我有一个包含对象的数组,我想按对象对数组进行排序 属性。所以我必须为此使用 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())

的方法