Сортировка по нескольким значениям массива?

Пусть существует массив объектов следующего вида:
Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [name] => Name_1
            [primaryImage] => 25a322150a51fe077b196c8cd3d6275d1.jpg
        )

    [1] => stdClass Object
        (
            [id] => 2
            [name] => Name_2
            [primaryImage] => 
        )

    [2] => stdClass Object
        (
            [id] => 3
            [name] => Name_3
            [primaryImage] => b2ddf5b9cfd80f8896256ca90bac43963.jpg
            [today] => 1
        )

Необходимо отсортировать так, чтобы вначале шли объекты:
  1. [today] и [primaryImage]
  2. [primaryImage]
  3. [today]
  4. Все остальные

В данный момент через array_multisort() получилось отсортировать только по [today] и [primaryImage] и [today]. По [primaryImage] пересортировывается второй результат. Как быть?
  • Вопрос задан
  • 209 просмотров
Пригласить эксперта
Ответы на вопрос 2
@BorisKorobkov Куратор тега PHP
Web developer
Ответ написан
Комментировать
Что-то типа этого (PHP 7 и массив, у вас же объект):
usort($data, function($a, $b) {
    return ($a['today'] < $b['today'] ?? ( $a['primaryImage'] < $b['primaryImage'] ?? ($a['today'] < $b['today']) ));
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы