【发布时间】:2018-08-29 19:28:39
【问题描述】:
我有一个包含对象的数组,我想按对象属性对数组进行排序。所以我必须为此使用 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记录,数组没有排序)
【问题讨论】:
-
执行
var_dump($fields)并发布输出 -
var_dump($fields);die;给了我一个空白页...但是 var_dump($fields[0]->getPosition());die;给我正确的号码。
-
嗯,这很奇怪。那么
var_dump(gettype($fields))呢? -
那是字符串(6)“对象”
-
如果 var_dump($fields) 给你一个空页面......也许你正在寻找的问题不是在 usort 上,而是在这个数组的分配/声明/修改中,所以我们将需要看那个代码..我用我自己定义的数组尝试了你的代码,它工作了