Foreach to ulepszona wersja pętli for.
Pętla foreach iteruje po zestawie danych, który jej przekażemy. Nie musisz się zatem martwić zwiększaniem wartości zmiennej i ustalaniem górnego limitu.
Przekazując pętli foreach tablicę masz pewność, że pętla wykona blok kodu dla każdego z obecnych w niej elementów.
Nie musisz określać punktu początkowego i końcowego. W przypadku tej pętli przekazujesz tylko listę elementów (np. w formie tablica) i pętla foreach przechodzi przez nią, jeden po drugim, do samego końca.
Zobacz przykład z tablicą:
<?php $numbers = array(); // wypełnij dane przy pomocy pętli for for($i = 0; $i < 10; $i++) { $numbers[] = $i; } // użycie pętli foreach na tablicy foreach($numbers as $number) { // w każdym kolejnym przebiegu następny element tablicy // jest przechowywany w zmiennej $number echo $number; }
Pewnie widzisz to na pierwszy rzut oka. Podczas pracy ze zbiorami danych najwygodniej jest używać pętli foreach. Zaryzykuję nawet stwierdzenie, że pętla foreach jest najczęściej stosowaną pętlą w programowaniu w PHP.
Najważniejsze zalety
Poniżej trzy najważniejsze zalety:
- Nie musisz dokładnie wiedzieć, ile elementów zawiera zestaw.
- Nie musisz wyodrębniać ich pojedynczo.
- Pętla foreach działa z dowolnymi indeskami (za chwilę przykład z tablicą asocjacyjną).
W każdym przebiegu tej pętli otrzymujesz kolejny element dostępny w zmiennej pomocniczej, zadeklarowanej podczas definicji pętli (po słowie kluczowym „as”). W naszym przykładzie zdefiniowaliśmy „$numbers as $number”, więc otrzymujemy każdą następną liczbę w postaci zmiennej $number.
Teraz czas na przykład z tablicą asocjacyjną.
Foreach i tablice asocjacyjne
Dla szybkiego przypomnienia, tablice asocjacyjne to te z niestandardowym indeksem. Jej elementy nie są numerowane (1, 2, 3 itd.) tylko możesz sam definiować, jak poszczególny indeks wygląda.
Posłużmy się przykładem ucznia, któremu dodajemy poszczególne atrybuty (jak imię, nazwisko, data urodzenia itp.).
<?php $student = array(); $student['firstName'] = 'Marcin'; $student['lastName'] = 'Wesel'; $student['birthday'] = '19-05-1989'; foreach ($student as $data) { echo "Wartość atrybutu: $data"; }
Skrypt wyświetli trzy wartości atrybutu: Marcin Wesel 19-05-1989.
Pętla foreach ma jeszcze jedną ważną zaletę. Mianowicie, możesz pobrać wartość klucza (indeksu) i uzyskać do niego dostęp w każdym z przebiegów pętli.
Zobacz przykład:
<?php $student = array(); $student['firstName'] = 'Marcin'; $student['lastName'] = 'Wesel'; $student['birthday'] = '19-05-1989'; foreach ($student as $key => $data) { echo "Wartość dla indeksu: $key to: $data"; }
Wtedy uzyskasz rezultat w postaci: „Wartość dla indeksu: firstName to: Marcin”.
Ta pętla również wspiera przerwania w postaci break i continue. Możesz w każdym momencie przerwać jej wykonywanie lub przeskoczyć do kolejnej iteracji.
To naprawdę potężne narzędzie. Założę się, że będziesz z niej często korzystać.
W kolejnej lekcji podzielę się z Tobą wiedzą na temat korzystania w PHP z dat i czasu. Zapraszam serdecznie.
Spis lekcji w rozdziale trzecim
Poprzednia lekcja: Definiowanie indeksu tablicy | Następna lekcja: Data i czas |