Gratulacje, kretor Mój egrafik został zakończony. Jeżeli rejestrowałeś się w tym kreatorze, pamiętaj aby kliknąć w link potwierdzający, wysłany na Twój adres email. Jeżeli tego nie zrobisz, nie będziesz mógł się zalogować, a dodane przez Ciebie wpisy nie zostaną opublikowane.
PHP 4 zawiera, czego brak w PHP 3, konstrukcję foreach,
podobną do jej odpowiedników z Perla i innych języków. Pętla ta umożliwia
łatwą iterację wewnątrz tablic. foreach działa tylko
na tablicach i każda próba użycia tej pętli na innym typie lub na
niezainicjowanej zmiennej będzie skwitowana komunikatem o błędzie.
Istnieją dwie składnie tej konstrukcji,
przy czym druga jest mniej ważnym, lecz użytecznym rozszerzeniem pierwszej:
foreach(wyrażenie_tablicowe as $wartość) wyrażenie
foreach(wyrażenie_tablicowe as $klucz => $wartość) wyrażenie
Pierwsza odmiana iteruje wewnątrz tablicy podanej w
wyrażenie_tablicowe. Przy każdej iteracji, wartość
aktualnego elementu tablicy jest przypisywana do zmiennej
$wartość, a wewnętrzny wskaźnik tablicy jest przesuwany
o jeden (więc w następnej iteracji przypisany zostanie kolejny element
tablicy).
Druga odmiana działa tak samo jak pierwsza, przy czym klucz aktualnego
elementu tablicy zostanie przypisany do zmiennej $klucz
w każdej iteracji.
Notatka:
Kiedy rozpoczyna się wykonywanie pętli foreach,
wewnętrzny wskaźnik tablicy jest automatycznie resetowany, co ustawia
go na pierwszym elemencie tablicy. Oznacza to, że nie trzeba wywoływać
komendy reset() przed rozpoczęciem pętli
foreach.
Notatka:
Proszę także pamiętać, że konstrukcja foreach operuje
na kopii tablicy, a nie na oryginale, więc położenie kursora tablicy
nie jest modyfikowane jak w konstrukcji each(),
a zmiany dokonane na pobranym elemencie tablicy nie oddziałują na
oryginalną tablicę. Jednakże wewnętrzny kursor oryginalnej tablicy
jest przesuwany w trakcie trawersowania tablicy.
Zakładając, że pętla foreach będzie działać aż
do przetworzenia całej tablicy, kursor tablicy będzie się znajdował na
końcu tablicy.
Notatka: foreach nie pozwala na ukrycie komunikatów
o błędach za pomocą '@'.
Można zauważyć, że poniższe przykłady są funkcjonalnie identyczne:
$arr = array("jeden", "dwa", "trzy"); reset ($tabl); while (list(, $wartość) = each ($tabl)) { echo "Wartość: $wartość<br>\n"; }
foreach ($tabl as $wartość) { echo "Wartość: $wartość<br>\n"; }
Poniższe przykłady są również funkcjonalnie identyczne:
reset ($tabl); while (list($klucz, $wartość) = each ($tabl)) { echo "Klucz: $klucz; Wartość: $wartość<br>\n"; }