1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | <?php class IteratorTest implements ArrayAccess, Iterator { private $pointer = 0; private $objects = array(); public function offsetExists($index) { return isset($this->objects[$index]); } public function offsetGet($index) { return $this->objects[$index]; } public function offsetSet($index, $newValue) { $this->objects[$index] = $newValue; } public function offsetUnset($index) { unset($this->objects[$index]); } public function key() { return key($this->objects); } public function current() { return current($this->objects); } public function next() { next($this->objects); } public function rewind() { reset($this->objects); } public function valid() { return current($this->objects); } } $it = new IteratorTest(); $it['one'] = 1; $it['two'] = 2; foreach ($it as $k => $v) { echo "$k: $v\n"; } // expected result: // one: 1 // two: 2 |
PD9waHAKY2xhc3MgSXRlcmF0b3JUZXN0IGltcGxlbWVudHMgQXJyYXlBY2Nlc3MsIEl0ZXJhdG9yIHsKICBwcml2YXRlICRwb2ludGVyID0gMDsKICBwcml2YXRlICRvYmplY3RzID0gYXJyYXkoKTsKCiAgcHVibGljIGZ1bmN0aW9uIG9mZnNldEV4aXN0cygkaW5kZXgpIHsKICAgIHJldHVybiBpc3NldCgkdGhpcy0+b2JqZWN0c1skaW5kZXhdKTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRHZXQoJGluZGV4KSB7CiAgICByZXR1cm4gJHRoaXMtPm9iamVjdHNbJGluZGV4XTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRTZXQoJGluZGV4LCAkbmV3VmFsdWUpIHsKICAgICR0aGlzLT5vYmplY3RzWyRpbmRleF0gPSAkbmV3VmFsdWU7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0VW5zZXQoJGluZGV4KSB7CiAgICB1bnNldCgkdGhpcy0+b2JqZWN0c1skaW5kZXhdKTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBrZXkoKSB7CiAgICByZXR1cm4ga2V5KCR0aGlzLT5vYmplY3RzKTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBjdXJyZW50KCkgewogICAgcmV0dXJuIGN1cnJlbnQoJHRoaXMtPm9iamVjdHMpOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIG5leHQoKSB7CiAgICBuZXh0KCR0aGlzLT5vYmplY3RzKTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiByZXdpbmQoKSB7CiAgICByZXNldCgkdGhpcy0+b2JqZWN0cyk7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gdmFsaWQoKSB7CiAgICByZXR1cm4gY3VycmVudCgkdGhpcy0+b2JqZWN0cyk7CiAgfQp9CgokaXQgPSBuZXcgSXRlcmF0b3JUZXN0KCk7CgokaXRbJ29uZSddID0gMTsKJGl0Wyd0d28nXSA9IDI7Cgpmb3JlYWNoICgkaXQgYXMgJGsgPT4gJHYpIHsKICBlY2hvICIkazogJHZcbiI7Cn0KCi8vIGV4cGVjdGVkIHJlc3VsdDoKLy8gb25lOiAxCi8vIHR3bzogMg==
-
upload with new input
-
result: Success time: 0.02s memory: 13112 kB returned value: 0
one: 1 two: 2


