堆是實現優先隊列的經典數據結構,基於二叉堆(完全二叉樹變體)。根節點最大為大根堆/最大堆,最小為小根堆/最小堆。常用於堆排序與任務調度。

SplHeap 為抽象類,定義核心介面。SplMaxHeap(最大堆)與 SplMinHeap(最小堆)繼承實現,無額外方法。

子類必須實現 compare($value1, $value2) 決定元素優先級:
$value1 優先級更高(大根堆)$value2 優先級更高class MySimpleHeap extends SplHeap {
public function compare($value1, $value2) {
return ($value1 - $value2); // 數值越小優先級越高
}
}
$heap = new MySimpleHeap();
$heap->insert(4);
$heap->insert(8);
$heap->insert(1);
$heap->insert(0);
echo $heap->top(); // 0(堆頂最小值)
echo $heap->count(); // 4
foreach ($heap as $number) {
echo $number; // 依優先級輸出:0, 1, 4, 8
}
insert($value):插入元素,自動維持堆性質top():取得堆頂元素(不移除)extract():取出並移除堆頂元素count() / isEmpty():狀態查詢Iterator,可直接 foreach 遍歷SPL 堆提供開箱即用的高效優先隊列,避免手寫複雜邏輯,是 PHP 開發者工具箱中的利器。