функция сравнения usort не вызывается - PullRequest
0 голосов
/ 29 августа 2018

У меня есть массив с объектами, и я хочу отсортировать массив по свойству объекта. Поэтому я должен использовать 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 и массив не отсортирован)

1 Ответ

0 голосов
/ 30 августа 2018

usort не работает с объектами (в любом случае в PHP 7.2). Вам нужно преобразовать это в массив (так как он выглядит как объект коллекции, он, вероятно, имеет метод, подобный toArray())

...