Я бы хотел заказать список MyObject ($myObjectList
) по itemOrderList (, доступный в переменной в примере кода ), как MyObject без поставщика, MyObject с поставщиком Gmail, MyObject с поставщиком Hotmail,и другие в конце.
private function reOrderByProvider(
MyObject $actualObject,
MyObject $nextObject
): int {
$actual = array_search($actualObject->getProvider(), $this->itemOrderList);
$next = array_search($nextObject->getProvider(), $this->itemOrderList);
if ($actual === $next) {
return 0;
}
return (($next === false) || ($actual < $next)) ? -1 : +1;
}
Список заказов, которые я должен соблюдать:
$this->itemOrderList = [null, 'gmail', 'hotmail'];
У меня есть несколько объектов с поставщиком Gmail, поставщиком Hotmail, а некоторые объекты не являютсяперечисленные в списке, эти незарегистрированные поставщики должны быть в конце сортировки.
Для этого я использую эту функцию PHP usort($myObjectList, [$this, 'reOrderByProvider']);