update page now
Laravel Live Japan

SplPriorityQueue::compare

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

SplPriorityQueue::compareComparar prioridades para colocar elementos corretamente no heap ao subir

Descrição

public SplPriorityQueue::compare(mixed $priority1, mixed $priority2): int

Compara priority1 com priority2.

Parâmetros

priority1

A prioridade do primeiro nó sendo comparado.

priority2

A prioridade do segundo nó sendo comparado.

Valor Retornado

Resultado da comparação, inteiro positivo se priority1 for maior que priority2, 0 se forem iguais, inteiro negativo caso contrário.

Nota:

Múltiplos elementos com a mesma prioridade serão desenfileirados em nenhuma ordem específica.

adicionar nota

Notas de Usuários 2 notes

up
18
Anonymous
16 years ago
At this time, the documentation sais "Note: Multiple elements with the same priority will get dequeued in no particular order."

If you need elements of equal priority to maintain insertion order, you can use something like:

<?php

class StablePriorityQueue extends SplPriorityQueue {
    protected $serial = PHP_INT_MAX;
    public function insert($value, $priority) {
        parent::insert($value, array($priority, $this->serial--));
    }
}

?>
up
2
Anonymous
2 years ago
To create a min-heap priority queue, and have extract() give you the lowest priority:

class MinPriorityQueue extends SplPriorityQueue {
    public function compare($priority1, $priority2) {
        if ($priority1 === $priority2) return 0;
        return $priority1 > $priority2 ? 1 : -1; 
    }
}
To Top