PHP Conference Japan 2024

SplPriorityQueue::compare

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

SplPriorityQueue::compare比較優先順序,以便在向上篩選時將元素正確放置在堆積中

說明

public SplPriorityQueue::compare(mixed $priority1, mixed $priority2): int

比較 priority1priority2

參數

priority1

要比較的第一個節點的優先順序。

priority2

要比較的第二個節點的優先順序。

回傳值

比較的結果,如果 priority1 大於 priority2,則為正整數;如果它們相等,則為 0;否則為負整數。

注意事項:

具有相同優先順序的多個元素將以不特定順序出佇列。

新增註釋

使用者貢獻的註釋 2 則註釋

匿名
15 年前
目前,文件說明「注意:具有相同優先順序的多個元素將以不特定順序出列。」

如果您需要相同優先順序的元素維持插入順序,您可以使用類似以下的程式碼:

<?php

class StablePriorityQueue extends SplPriorityQueue {
protected
$serial = PHP_INT_MAX;
public function
insert($value, $priority) {
parent::insert($value, array($priority, $this->serial--));
}
}

?>
匿名
1 年前
要建立一個最小堆積優先佇列,並讓 extract() 傳回最低優先順序的元素

class MinPriorityQueue extends SplPriorityQueue {
public function compare($priority1, $priority2) {
if ($priority1 === $priority2) return 0;
return $priority1 > $priority2 ? 1 : -1;
}
}
To Top