- var_dump: documentation ( source)
- array_shift: documentation ( source)
<?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);
}