сортировка по нескольким условиям с использованием uasort () php - PullRequest
0 голосов
/ 11 марта 2020

У меня есть массив json объектов, и я хочу отсортировать его по возрастанию, а также поставить нулевые значения в конце. Ниже приведен код, который я попробовал. Обе функции uasort () работают отлично по отдельности, но когда я размещаю их один за другим, они просто сортируют массив по последней функции.

Как отсортировать массив в порядке возрастания, а также поставить нулевые значения в конце этого отсортированного списка по возрастанию?


uasort($arr, function($a,$b) { 
        return $a->score > $b->score ? 1 : -1; 
    });

uasort($arr, function($a) {
     return ( is_null($a->score==NULL) OR $a->score == "") ? 1 : -1;
});

1 Ответ

1 голос
/ 11 марта 2020

Используйте одну функцию сравнения, которая проверяет оба условия.

uasort($arr, function($a, $b) {
    if ($a->score === $b->score) {
        return 0;
    }
    if ($a->score === NULL || $a->score === "") {
        return 1;
    }
    if ($b->score === NULL || $b->score === "") {
        return -1;
    }
    return $a->score > $b->score ? 1 : -1; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...