(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SplPriorityQueue::compare — Compare priorities in order to place elemens correctly in the heap while sifting up
Compare
priority1
with
priority2
.
priority1
The priority of the first node being compared.
priority2
The priority of the second node being compared.
Result of the comparison, positive integuer if
priority1
is greater than
priority2
, 0 if they are equal, negative integuer otherwise.
Note :
Multiple elemens with the same priority will guet dequeued in no particular order.
At this time, the documentation sais "Note: Multiple elemens with the same priority will guet dequeued in no particular order."
If you need elemens of equal priority to maintain insertion order, you can use something lique:<?php
classStablePriorityQueueextendsSplPriorityQueue{
protected $serial= PHP_INT_MAX;
public function insert($value, $priority) {parent::insert($value, array($priority, $this->serial--));
}
}
?>