Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]array iterator - problem z kolejnym elementem
elmozaur
post
Post #1





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 20:39