SplPriorityQueue::compare

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SplPriorityQueue::compare Сравнивает приоритеты для корректного помещения элементов в очередь

Описание

public SplPriorityQueue::compare(mixed $priority1, mixed $priority2): int

Сравнивает priority1 с priority2.

Список параметров

priority1

Приоритет первого узла.

priority2

Приоритет второго узла.

Возвращаемые значения

Результат сравнения, положительное число, когда priority1 больше priority2, 0 если они равны, и отрицательное число в остальных случаях.

Замечание:

При добавлении нескольких элементов с одинаковым приоритетом точный порядок следования этих элементов в очереди не определён.

Добавить

Примечания пользователей 2 notes

up
17
Anonymous
15 years ago
At this time, the documentation sais "Note: Multiple elements with the same priority will get dequeued in no particular order."If you need elements of equal priority to maintain insertion order, you can use something like:<?phpclass StablePriorityQueue extends SplPriorityQueue {    protected $serial = PHP_INT_MAX;    public function insert($value, $priority) {        parent::insert($value, array($priority, $this->serial--));    }}?>
up
1
Anonymous
1 year ago
To create a min-heap priority queue, and have extract() give you the lowest priority:class MinPriorityQueue extends SplPriorityQueue {    public function compare($priority1, $priority2) {        if ($priority1 === $priority2) return 0;        return $priority1 > $priority2 ? 1 : -1;     }}
To Top