首页 > 解决方案 > 似乎没有调用 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并且数组没有排序)

标签: phpusort

解决方案


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


推荐阅读