Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]array iterator - problem z kolejnym elementem
Forum PHP.pl > Forum > Przedszkole
elmozaur
Witam.

Po poraddzie kolegow z forum.php.pl w swoim skrypcie uzylem obiektowego iteratora tablicy.
  1. $arrayobject = new ArrayObject($produkty);
  2. $iterator = $arrayobject->getIterator();
  3.  
  4. $iterator->seek($startIndex);
  5.  
  6. for($i=1;$i<=$limit;$i++)
  7. {
  8. if($iterator->valid()){
  9. echo '<tr><td>'.$iterator->key().'</td></tr>';
  10. }
  11. $iterator->next();
  12. }


Mialo to dzialac tak:
tworzony jest obiekt i wyliczany startIndex od ktorego tablica ma byc pokazywana np od elementu 0 (seek(0)).
Nastepnie od wskazanego elementu pokazujemy 100 kolejnych elementow (limit=100).

ten mechanizm dziala ok ale tylko na duzych tablicach.
Jesli tablica ma np 3 elementy to iterator przeskakuje do poczatku i pokazuje 1,2,3,1,2,3,1,2,3,1,2,3 i tak 100elementow (a powinien tylko 1,2,3)
Myslalem ze $iterator->valid() zatrzyma iterowanie tablicy ale okazuje sie ze nie.
gdzie moze byc blad ?

pozdrawiam
G



poniewaz nie ma odpowiedzi a udalo mi sie rozwiazac problem odpowiedam ze wystarczy uzyc petli while zamiast for a jako warunek dac $iterator->valid() i smiga


pozdrawiam
G
Crozin
1. Możesz bezpośrednio utworzyć obiekt ArrayIterator - nie musisz tego robić przez ArrayObject.
2. $limit możesz określić jako mniejszą (min) wartość z dwóch: 100, wielkość tablicy. Unikniesz problemu przy mniejszych tablicach.
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.