<?php
class myIterator implements Iterator {
private $position = 0;
private $keys;
public function __construct
(array $arr) { $this->position = 0;
}
$this->position = 0;
}
}
return $this->keys[$this->position];
}
++$this->position;
}
function valid() {
return isset($this->keys[$this->position]); }
}
$it = new myIterator
(array( 'a' => "firstelement",
'b' => "secondelement",
'c' => "lastelement",
));
foreach($it as $key => $value) {
echo "\n";
}
PD9waHAKCmNsYXNzIG15SXRlcmF0b3IgaW1wbGVtZW50cyBJdGVyYXRvciB7CiAgICBwcml2YXRlICRwb3NpdGlvbiA9IDA7CiAgICBwcml2YXRlICRrZXlzOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkYXJyKSB7CiAgICAgICAgJHRoaXMtPmFycmF5ID0gJGFycjsKICAgICAgICAkdGhpcy0+a2V5cyA9IGFycmF5X2tleXMoJGFycik7CiAgICAgICAgJHRoaXMtPnBvc2l0aW9uID0gMDsKICAgIH0KCiAgICBmdW5jdGlvbiByZXdpbmQoKSB7CiAgICAgICAgJHRoaXMtPnBvc2l0aW9uID0gMDsKICAgIH0KCiAgICBmdW5jdGlvbiBjdXJyZW50KCkgewogICAgICAgIHJldHVybiAkdGhpcy0+YXJyYXlbJHRoaXMtPmtleSgpXTsKICAgIH0KCiAgICBmdW5jdGlvbiBrZXkoKSB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5rZXlzWyR0aGlzLT5wb3NpdGlvbl07CiAgICB9CgogICAgZnVuY3Rpb24gbmV4dCgpIHsKICAgICAgICArKyR0aGlzLT5wb3NpdGlvbjsKICAgIH0KCiAgICBmdW5jdGlvbiB2YWxpZCgpIHsKICAgICAgICByZXR1cm4gaXNzZXQoJHRoaXMtPmtleXNbJHRoaXMtPnBvc2l0aW9uXSk7CiAgICB9Cn0KCiRpdCA9IG5ldyBteUl0ZXJhdG9yKGFycmF5KAogICAgICAgICdhJyA9PiAiZmlyc3RlbGVtZW50IiwKICAgICAgICAnYicgPT4gInNlY29uZGVsZW1lbnQiLAogICAgICAgICdjJyA9PiAibGFzdGVsZW1lbnQiLAogICAgKSk7Cgpmb3JlYWNoKCRpdCBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgdmFyX2R1bXAoJGtleSwgJHZhbHVlKTsKICAgIGVjaG8gIlxuIjsKfQ==