(PHP 5 >= 5.3.0)
SplPriorityQueue::compare — Compare priorities in order to place elements correctly in the heap while sifting up.
Compare priority1 with priority2.
The priority of the first node being compared.
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.
Hinweis:
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--));
}
}
?>