Функция сравнения 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 и массив не отсортирован)

1 ответ

Решение

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

Другие вопросы по тегам