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