PHP Conference Japan 2024

SplPriorityQueue::compare

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SplPriorityQueue::compare比较优先级,以便在向上筛选时将元素正确放置在堆中

描述

public SplPriorityQueue::compare(混合 $priority1, 混合 $priority2): int

比较priority1priority2

参数

priority1

正在比较的第一个节点的优先级。

priority2

正在比较的第二个节点的优先级。

返回值

比较结果,如果priority1大于priority2则为正整数,如果它们相等则为 0,否则为负整数。

注意:

具有相同优先级的多个元素将以不确定的顺序出队。

添加注释

用户贡献的注释 2 条注释

匿名
15 年前
目前,文档中写道“注意:具有相同优先级的多个元素将以不确定的顺序出队”。

如果您需要具有相同优先级的元素保持插入顺序,您可以使用类似以下内容:

<?php

StablePriorityQueue 扩展 SplPriorityQueue {
受保护
$serial = PHP_INT_MAX;
公共函数
insert($value, $priority) {
::insert($value, 数组($priority, $this->serial--));
}
}

?>
匿名
1 年前
要创建一个最小堆优先级队列,并让 extract() 返回最低优先级

类 MinPriorityQueue 扩展 SplPriorityQueue {
公共函数 compare($priority1, $priority2) {
如果 ($priority1 === $priority2) 返回 0;
返回 $priority1 > $priority2 ? 1 : -1;
}
}
To Top