php - 似乎没有调用 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并且数组没有排序)
解决方案
usort
不适用于对象(无论如何在 PHP 7.2 中)。您需要将其转换为数组(因为它似乎是一个集合对象,它可能有一个类似的方法toArray()
)
推荐阅读
- windows - Windows 上的 .git-credentials:每次提取时添加一行
- docker - docker 命令中的 :ro 运行 nginx 有什么作用
- python - ADLS Blob 存储 ACL 应该如何继承?
- c# - System.Text.Json - 根据字段属性有条件地使用自定义 JsonConverter
- python - Pipfile 中的 Elastic BeanStalk Django 错误
- sql - 返回 JSON 的 PostgreSQL 函数采用函数名称
- reactjs - 如何让 ReactJS Storybook 对封装的函数(而不是通过 props 传入的函数)运行操作?
- google-api - Google API 密钥限制正在阻止 Google Place Photos
- flutter - 如何在颤动中将文件保存在下载文件夹中?
- boxplot - 在 python 中创建带有误差线的箱线图