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

时间:2018-08-29 19:28:39

标签: php usort

我有一个包含对象的数组,我想按对象属性对数组进行排序。因此,我必须为此使用usort。但是我的数组没有排序。因此,我在代码中放入了一些var_dump进行调试。这是我的代码:

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记录并且数组未排序)

1 个答案:

答案 0 :(得分:3)

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