Сортировка массива объектов по свойству

Если есть массив объектов и необходимо его отсортировать по полю (или нескольким), то то для этого существует функция usort ([массив], callable функция).

Ниже описан пример сортировки массива объектов с помощью статического метода в классе объекта.

Использование:

usort($tickets, [Ticket::className(),'CompareByUpdateDateNewFirst']);

Код класса:

Class Ticket
{
 
  /**
  * @var DateTime
  */
  protected $updateDate;

  /**
  * @return DateTime
  */
  public function getUpdateDate() {
    return $this->updateDate
  }
  /**
  * @param self $a - compared instance
  * @param self $b - compared instance
  *
  * @return int (0, 1 or -1)
  */
  public static function CompareByUpdateDateNewFirst($a, $b) {
    if ($a->getUpdateDate() == $b->getUpdateDate()) {
      return 0;
    }
    return (($a->getUpdateDate() < $b->getUpdateDate())) ? 1 : -1;
  }
}

 

1 комментарий

  • Mikeoa:

    Необязательный параметр. Указывает функцию, определяющую порядок сортировки. Если опущен, массив сортируется в соответствии со значениями кодовых точек каждого символа Unicode , полученных путём преобразования каждого элемента в строку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code