SplHeap::compare

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

SplHeap::compare要素を比較し、ヒープ内の適切な位置に置く

説明

protected function SplHeap::compare(mixed $value1, mixed $value2): int

value1value2 を比較します。

警告

SplHeap::compare() 内で例外がスローされると、ヒープが壊れてしまいブロックされた状態になることがあります。 SplHeap::recoverFromCorruption() をコールすればブロック状態を解除することができます。 しかし、適切な場所に配置されていない要素が出てくることもあり、 ヒープの性質が失われてしまいます。

パラメータ

value1

比較したい最初のノード。

value2

比較したい 2 番目のノード。

戻り値

比較結果を返します。value1value2 より大きい場合は正の整数値、等しい場合は 0、 小さい場合は負の整数値となります。

注意:

同一の値を持つ複数の要素をヒープ内に保持することはおすすめしません。 そうすると、ヒープ内の相対位置がはっきりしなくなってしまいます。

add a note

User Contributed Notes 1 note

up
0
ohcc at 163 dot com
28 days ago
This method is abstract, and in PHP 8.0+ its parameters are of type `mixed`, you can not change their types to types other than `mixed` when `extends`ing SplHeap.

The following example emits an error saying "Fatal error: Declaration of WuXianchengHeap::compare(string $one, string $two): int must be compatible with SplHeap::compare(mixed $value1, mixed $value2)".

<?php
    class WuXianchengHeap extends SplHeap{
        public function __construct(Iterator $iterator){
            foreach($iterator as $item){
                $this->insert($item);
            }
        }
        public function compare(string $one, string $two):int{
            return -1 * strNatCaseCmp($one, $two);
        }
    }
?>
To Top