Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Itelator .Dlaczego w trakcie pętli foreach pobiera akurat dane z pola o nazwie array?
Forum PHP.pl > Forum > PHP
anonim1989
Itelator .Dlaczego w trakcie pętli foreach pobiera akurat dane z pola o nazwie $array? a nie z innej? czy można zrobić tak by pobierał z innego pola? mam tu przykład:
  1. <?php
  2. class myIterator implements Iterator {
  3. private $position = 0;
  4. public $array = array(
  5. "firstelement",
  6. "secondelement",
  7. "lastelement",
  8. );
  9. public $dane = array(
  10. "kowalski",
  11. "stypkiewicz",
  12. "nowicki",
  13. );
  14.  
  15. public function __construct() {
  16. var_dump(__METHOD__);
  17. $this->position = 0;
  18. }
  19.  
  20. function rewind() {
  21. var_dump(__METHOD__);
  22. $this->position = 0;
  23. }
  24.  
  25. function current() {
  26. var_dump(__METHOD__);
  27. return $this->array[$this->position];
  28. }
  29.  
  30. function key() {
  31. var_dump(__METHOD__);
  32. return $this->position;
  33. }
  34.  
  35. function next() {
  36. var_dump(__METHOD__);
  37. ++$this->position;
  38. }
  39.  
  40. function valid() {
  41. var_dump(__METHOD__);
  42. return isset($this->array[$this->position]);
  43. }
  44. }
  45.  
  46. $it = new myIterator;
  47.  
  48. foreach($it as $key => $value) {
  49. var_dump($key);
  50. var_dump($value);
  51.  
  52. }
  53.  
  54. ?>


Gdy wykonuje pętle pobiera dane z $array.Jak zrobić by pobierał dane w czasie foreach z tablicy $dane;
Noidea
Zwraca z tablicy $array, bo tak jej kazałeś. Zerknij na funkcje current() i valid().

Dodatkowo masz błąd w next(). Ona oprócz zwiększania licznika o 1 powinna również zwracać aktualny element. Dopisz do niej na końcu:
return $this->current();

@Crozin: faktycznie, musiała mnie zmylić funkcja next
Fifi209
@up

Jak dla mnie wystarczy dopisać return przed ++
Crozin
@Noidea: Iterator::next() nie zwraca niczego: http://pl.php.net/manual/en/iterator.next.php
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.