SplPriorityQueue::compare()
(PHP 5 >= 5.3.0, PHP 7)
Compare priorities in order to place elements correctly in the heap while sifting up
说明
public SplPriorityQueue::compare(mixed $priority1, mixed $priority2) : int
Compare $priority1with $priority2.
参数
- $priority1
The priority of the first node being compared.
- $priority2
The priority of the second node being compared.
返回值
Result of the comparison, positive integer if $priority1 is greater than $priority2, 0 if they are equal, negative integer otherwise.
Note:Multiple elements with the same priority will get dequeued in no particular order.
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: <?php class StablePriorityQueue extends SplPriorityQueue { protected $serial = PHP_INT_MAX; public function insert($value, $priority) { parent::insert($value, array($priority, $this->serial--)); } } ?>