Myiterator = $iterator; $this->position = 0;} Gets the current function currently () {return $this->myiterator[$this->position]; }//next indexfunction Next () {+ + $this->position;} Get key (subscript) function key () {return $this->position;} function value () {return $this->myiterator[$this->position];} Re-traverse Function rewind () {$this->position = 0; }function valid () {return isset ($this->myiterator[$this->position]);}} application/* $aData = Array (' A ', ' B ', ' C '); $myiterator = new Myiterator ($aData); while ($myiterator->valid ()) {$myiterator->next ();} *///(2) build its own container interface container {public function getiterator ();} Class MyContainer implements Container{private $iterator;p ublic function __construct ($data) {$this->iterator = new Myiterator ($data);} Public Function Getiterator () {return $this->iterator;}} application Example $data = Array (' A ', ' B ', ' C '), $myContainer = new MyContainer ($data);//Get iterator $myiterator = $myContainer->getitera Tor (); while ($myiterator->valid () {Var_dump ($myiterator->current ()); $myiterator->next ();}