3v4l.org

run code in 300+ PHP versions simultaneously
<?php class UBuffer implements ArrayAccess, IteratorAggregate, Countable { public function __construct($input) { for ($it = 0; $it < mb_strlen($input); $it++) { $this->buffer[$it] = mb_substr($input, $it, 1); } } public function offsetGet($offset) { return $this->buffer[$offset]; } public function offsetUnset($offset) { throw new RuntimeException("NOPE"); } public function offsetSet($offset, $char) { throw new RuntimeException("NOPE"); } public function offsetExists($offset) { return isset($this->buffer[$offset]); } 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: $count++; break; } } foreach ($this->buffer as $idx => $value) $this->buffer[$idx] = new UBuffer($value); } 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:
224.09 ms | 3928 KiB | 13 Q