PHPイテレータで連想配列を使用したい:
http://php.net/manual/en/class.iterator.php
出来ますか?
私はこれらのメソッドを定義しました:
public function rewind(){
reset($this->_arr);
$this->_position = key($this->_arr);
}
public function current(){
return $this->_arr[$this->_position];
}
public function key(){
return $this->_position;
}
public function next(){
++$this->_position;
}
public function valid(){
return isset($this->_arr[$this->_position]);
}
問題は、正しく繰り返されないことです。私は1つの要素しか取得しません。
++$this->_position
_positionは文字列(連想配列のキー)であるため、next()メソッドのコードは効果がないためだと思います。
では、どうすればこのタイプの配列の次の要素に移動できますか?