Сортировка массива объектов по полю не имеет значения - PullRequest
0 голосов
/ 10 января 2019

У меня есть этот массив с именем $pages. Внутри у нас есть объекты с несколькими полями. Одним из этих полей является title.

Я хочу отсортировать по алфавиту title.

Внутри класса с именем PLUGIN_PAGES Я объявляю это ...

public function mySort($a, $b)
{
return $a->title < $b->title;
}

внутри другого метода, который я называю

 usort ($pages, array("PLUGIN_PAGES", "mySort"));

Нет ошибок. Кажется, он работает, но $pages все еще не отсортирован.

Есть идеи?

1 Ответ

0 голосов
/ 10 января 2019

Ваша функция должна возвращать целое число меньше нуля 0, равно 0 или больше 0 в зависимости от сравнения. Вы можете сделать это с помощью оператора космического корабля:

public function mySort($a, $b)
{
    return $a->title <=> $b->title;
}

Это по сути эквивалентно:

public function mySort($a, $b)
{
    if ($a->title < $b->title) {
        return -1;
    }
    if ($a->title > $b->title) {
        return 1;
    }
    return 0;
}

Для более старых версий PHP вы можете использовать предложение @ Dharman:

public function mySort($a, $b)
{
    return strcmp($a->title, $b->title);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...