serial--]); } /** * Yield all items as priority-value pairs * * @return Generator */ public function yieldAll() { // Clone queue because the SplPriorityQueue acts as a heap and thus items are removed upon iteration $queue = clone $this; $queue->setExtractFlags(static::EXTR_BOTH); foreach ($queue as $item) { yield $item['priority'][0] => $item['data']; } } }