Я хочу использовать ассоциативный массив с PHP итератора:метод Next Итератор для ассоциативного массива
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]);
}
Проблема заключается в том, что не перебирать правильно. Я получаю только один элемент.
Я думаю, что это из-за кода ++$this->_position
в методе next(), который не имеет никакого эффекта, потому что _position - это строка (ключ ассоциативного массива).
так как я могу перейти к следующему элементу массива этого типа?
Из любопытства, почему вы просто не используя [ ArrayIterator] (http://us.php.net/arrayiterator)? – nickb
Не могли бы вы предоставить больше кода? Это будет: а) часть, в которой вы говорите: «класс XYZ реализует Iterator» b) ту часть, где вы (пытаетесь) ее использовать. – Niko
«Я определил эти методы» - это называется «скопировано как-есть из документации» ;-) – zerkms