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--));
}
}
?>
SplPriorityQueue::compare
(PHP 5 >= 5.3.0)
SplPriorityQueue::compare — Compare deux priorités
Description
Compare la valeur priority1 avec
la valeur priority2.
Liste de paramètres
-
priority1 -
La priorité du premier noeud à comparer.
-
priority2 -
La priorité du second noeud à comparer.
Valeurs de retour
Le résultat de la comparaison ; un entier positif si la valeur
priority1 est plus grande que la valeur
priority2, 0 si les valeurs sont égales, et un
entier négatif sinon.
Note:
Avoir plusieurs éléments avec la même priorité fera qu'ils n'auront pas d'ordre particulier.
Anonymous
10-Oct-2009 04:51
