我有一个包含对象的数组,我想按对象属性对数组进行排序。因此,我必须为此使用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记录并且数组未排序)
答案 0 :(得分:3)
usort
不适用于对象(无论如何在PHP 7.2中)。您需要将其转换为数组(因为它似乎是一个集合对象,它可能具有类似toArray()
的方法)