函式名:SplPriorityQueue::compare()
適用版本:PHP 5 >= 5.3.0, PHP 7
用法: SplPriorityQueue::compare() 函式用於比較兩個元素的優先順序。它是SplPriorityQueue類的一個方法,用於自定義比較函式。在使用SplPriorityQueue類時,可以透過compare()方法來指定自定義的比較函式。
語法: public SplPriorityQueue::compare ( mixed $priority1 , mixed $priority2 ) : int
引數:
- $priority1: 第一個元素的優先順序
- $priority2: 第二個元素的優先順序
返回值: 比較結果的整數值。如果 $priority1 的優先順序高於 $priority2,則返回一個正整數;如果 $priority1 的優先順序低於 $priority2,則返回一個負整數;如果兩個優先順序相等,則返回 0。
示例: 下面是一個使用SplPriorityQueue::compare()方法的示例,展示瞭如何自定義比較函式來排序元素:
// 建立一個SplPriorityQueue物件
$queue = new SplPriorityQueue();
// 定義自定義的比較函式
function myCompare($priority1, $priority2) {
if ($priority1 == $priority2) {
return 0;
}
return ($priority1 > $priority2) ? -1 : 1;
}
// 設定自定義的比較函式
$queue->setExtractFlags(SplPriorityQueue::EXTR_DATA);
$queue->setExtractFlags(SplPriorityQueue::EXTR_PRIORITY);
$queue->setCompare('myCompare');
// 新增元素到佇列
$queue->insert('Item 1', 3);
$queue->insert('Item 2', 1);
$queue->insert('Item 3', 2);
// 迭代輸出佇列中的元素
foreach ($queue as $item) {
echo $item . "\n";
}
輸出結果:
Item 2
Item 3
Item 1
在上面的示例中,我們首先建立了一個SplPriorityQueue物件。然後,我們定義了一個名為myCompare的自定義比較函式,根據優先順序的不同返回不同的值。接下來,我們使用setCompare()方法設定自定義的比較函式。最後,我們使用insert()方法將元素新增到佇列中,並使用foreach迴圈迭代輸出佇列中的元素。由於我們自定義的比較函式,佇列中的元素按照優先順序從高到低的順序輸出。