# The SplPriorityQueue class

(PHP 5 >= 5.3.0, PHP 7)

## Introduction

The SplPriorityQueue class provides the main functionalities of a prioritized queue, implemented using a max heap.

> Note: The order of elements with identical priority is undefined. It may differ from the order in which they have been inserted.

## Class synopsis

SplPriorityQueue implements Iterator , Countable {
/* Methods */
public __construct ( )
public compare ( mixed `$priority1` , mixed `$priority2` ) : int
public count ( ) : int
public current ( ) : mixed
public extract ( ) : mixed
public getExtractFlags ( ) : int
public insert ( mixed `$value` , mixed `$priority` ) : bool
public isCorrupted ( ) : bool
public isEmpty ( ) : bool
public key ( ) : mixed
public next ( ) : void
public recoverFromCorruption ( ) : void
public rewind ( ) : void
public setExtractFlags ( int `$flags` ) : void
public top ( ) : mixed
public valid ( ) : bool
}

## Table of Contents

- SplPriorityQueue::compare — Compare priorities in order to place elements correctly in the heap while sifting up
- SplPriorityQueue::__construct — Constructs a new empty queue
- SplPriorityQueue::count — Counts the number of elements in the queue
- SplPriorityQueue::current — Return current node pointed by the iterator
- SplPriorityQueue::extract — Extracts a node from top of the heap and sift up
- SplPriorityQueue::getExtractFlags — Get the flags of extraction
- SplPriorityQueue::insert — Inserts an element in the queue by sifting it up
- SplPriorityQueue::isCorrupted — Tells if the priority queue is in a corrupted state
- SplPriorityQueue::isEmpty — Checks whether the queue is empty
- SplPriorityQueue::key — Return current node index
- SplPriorityQueue::next — Move to the next node
- SplPriorityQueue::recoverFromCorruption — Recover from the corrupted state and allow further actions on the queue
- SplPriorityQueue::rewind — Rewind iterator back to the start (no-op)
- SplPriorityQueue::setExtractFlags — Sets the mode of extraction
- SplPriorityQueue::top — Peeks at the node from the top of the queue
- SplPriorityQueue::valid — Check whether the queue contains more nodes