SplHeap::compare()是SplHeap類中的一個方法,用於比較兩個元素的大小順序。它必須被子類重寫來實現自定義的比較邏輯。
用法:
int SplHeap::compare ( mixed $value1 , mixed $value2 )
引數:
- $value1: 第一個要比較的元素。
- $value2: 第二個要比較的元素。
返回值:
- 如果$value1小於$value2,返回一個負整數。
- 如果$value1大於$value2,返回一個正整數。
- 如果$value1等於$value2,返回0。
示例:
class MyHeap extends SplHeap {
protected function compare($value1, $value2) {
// 自定義比較邏輯
if ($value1 < $value2) {
return -1; // $value1小於$value2
} elseif ($value1 > $value2) {
return 1; // $value1大於$value2
} else {
return 0; // $value1等於$value2
}
}
}
$heap = new MyHeap();
$heap->insert(5);
$heap->insert(2);
$heap->insert(8);
echo "堆中的元素按照自定義的比較邏輯排序:";
foreach ($heap as $value) {
echo $value . " ";
}
輸出結果:
堆中的元素按照自定義的比較邏輯排序:2 5 8
在上面的示例中,我們建立了一個自定義的堆類MyHeap,繼承自SplHeap。在MyHeap類中,我們重寫了compare()方法來定義自己的比較邏輯。然後我們透過insert()方法向堆中插入一些元素,並使用foreach迴圈遍歷堆中的元素,輸出按照自定義比較邏輯排序後的結果。