3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Queue { private $queue = []; public function add($var) { $this->queue[] = $var; } public function take(): \Generator { while($var = array_shift($this->queue)) { if($var instanceof Queue) { yield from $var->take(); } else { yield $var; } } } } $subQueue = new Queue(); $subQueue->add('A'); $subQueue->add('B'); $subQueue->add('C'); $queue = new Queue(); $queue->add('a'); $queue->add('b'); $queue->add('c'); $queue->add($subQueue); $queue->add('d'); foreach($queue->take() as $index => $item) { echo $index; if($index === 1) { $queue->add('hello'); } var_dump($item); }

preferences:
24.74 ms | 405 KiB | 5 Q