SplPriorityQueue::compare

(PHP 5 >= 5.3.0)

SplPriorityQueue::compareCompare priorities in order to place elements correctly in the heap while sifting up.

Description

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

Compare priority1 with priority2.

Parameters

priority1

The priority of the first node being compared.

priority2

The priority of the second node being compared.

Return Values

Result of the comparison, positive integer if priority1 is greater than priority2, 0 if they are equal, negative integer otherwise.

Note:

Multiple elements with the same priority will get dequeued in no particular order.

Коментарии

Автор:
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--));
    }
}

?>
2009-10-10 19:51:14
http://php5.kiev.ua/manual/ru/splpriorityqueue.compare.html
Автор:
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; 
    }
}
2023-09-08 02:47:55
http://php5.kiev.ua/manual/ru/splpriorityqueue.compare.html

    Поддержать сайт на родительском проекте КГБ