3v4l.org

run code in 300+ PHP versions simultaneously
<?php class UBuffer implements IteratorAggregate, Countable { public function __construct($input) { for ($it = 0; $it < mb_strlen($input); $it++) { $this->buffer[$it] = mb_substr($input, $it, 1); } } public function getIterator() { return new ArrayIterator($this->buffer); } public function count() { return count($this->data); } private $buffer; } class UBreaker implements IteratorAggregate, Countable { const KEEP = 1; const NEXT = 2; public function __construct(UBuffer $buffer, Closure $breaker) { $count = 0; $mem = null; foreach ($buffer as $idx => $char) { switch ($breaker($buffer, $idx, $char, $mem)) { case self::KEEP: if (isset($this->buffer[$count])) $this->buffer[$count] .= $char; else $this->buffer[$count] = $char; break; case self::NEXT: $this->buffer[$count] = new UBuffer($this->buffer[$count]); $count++; break; } } if (!$this->buffer[$count] instanceof UBuffer) $this->buffer[$count] = new UBuffer($this->buffer[$count]); } public function getIterator() { return new ArrayIterator($this->buffer); } public function count() { return count($this->buffer); } private $buffer; } $buffer = new UBuffer("This is a simple sentence. And here's another one."); $breaker = new UBreaker($buffer, function(UBuffer $buffer, $index, $char, &$mem) { switch ($char) { case " ": switch ($mem) { case ".": case "!": case "?": $mem = $char; return UBreaker::NEXT; } default: $mem = $char; return UBreaker::KEEP; } }); foreach ($breaker as $sentence) { var_dump($sentence); } ?>

This is an error 500

Value for `_results` contains invalid data `array`


preferences:
163 ms | 2886 KiB | 13 Q