$rooms */ public function groupRoomsBySelectionType(array $rooms): RoomGroupsDto { $groups = [ Room::SELECTION_TYPE_BY_PAX => [], Room::SELECTION_TYPE_BY_ROOM => [], ]; foreach ($rooms as $room) { if (false !== stripos($room->label, 'bett')) { $groups[Room::SELECTION_TYPE_BY_PAX][$room->id] = $room; continue; } $groups[Room::SELECTION_TYPE_BY_ROOM][$room->id] = $room; } uasort($groups[Room::SELECTION_TYPE_BY_PAX], static fn (Room $a, Room $b): int => $a->maxPax <=> $b->maxPax); uasort($groups[Room::SELECTION_TYPE_BY_ROOM], static fn (Room $a, Room $b): int => $a->maxPax <=> $b->maxPax); return new RoomGroupsDto( byPax: $groups[Room::SELECTION_TYPE_BY_PAX], byRoom: $groups[Room::SELECTION_TYPE_BY_ROOM], ); } }