目前,文档中写道“注意:具有相同优先级的多个元素将以不确定的顺序出队”。
如果您需要具有相同优先级的元素保持插入顺序,您可以使用类似以下内容:
<?php
类 StablePriorityQueue 扩展 SplPriorityQueue {
受保护 $serial = PHP_INT_MAX;
公共函数 insert($value, $priority) {
父::insert($value, 数组($priority, $this->serial--));
}
}
?>
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SplPriorityQueue::compare — 比较优先级,以便在向上筛选时将元素正确放置在堆中
priority1
正在比较的第一个节点的优先级。
priority2
正在比较的第二个节点的优先级。
比较结果,如果priority1
大于priority2
则为正整数,如果它们相等则为 0,否则为负整数。
注意:
具有相同优先级的多个元素将以不确定的顺序出队。