SplHeap::compare

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

SplHeap::compare Сравнивает элементы, чтобы во время сортировки корректно разместить их в куче

Описание

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

Сравнивает value1 с value2.

Внимание

Выбрасывание исключений в методе SplHeap::compare() может нарушить целостность кучи и перевести её в заблокированное состояние. Разблокировать кучу можно методом SplHeap::recoverFromCorruption(). Однако, некоторые элементы могут быть помещены некорректно, что нарушит сортировку внутри кучи.

Список параметров

value1

Значение первого сравниваемого узла.

value2

Значение второго сравниваемого узла.

Возвращаемые значения

Метод должен возвращать положительное значение, когда value1 больше value2, 0 если они равны, и отрицательное в остальных случаях.

Замечание:

Помещению в кучу одинаковых элементов нежелательно, так как невозможно будет отследить точное положение конкретного элемента.

Добавить

Примечания пользователей 1 note

up
0
ohcc at 163 dot com
2 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);
        }
    }
?>