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