Dla każdej iteracji pętli wartość bieżącego elementu tablicy jest przypisywana do zmiennej, a wskaźnik tablicy jest przesuwany o jeden, aż do ostatniego elementu tablicy. Zdanie to jest prawdziwe dla instrukcji
A. next
B. while
C. foreach
D. for
Pytanie z egzaminu CKE, czerwiec 2017 (arkusz E.14-X-17.06).
Instrukcja foreach jest właściwa, bo została zaprojektowana specjalnie do przechodzenia po elementach tablicy lub innej struktury iterowalnej. W każdej iteracji pobierany jest bieżący element i przypisywany do wskazanej zmiennej, np. foreach ($tablica as $element). Dzięki temu nie trzeba samodzielnie pilnować indeksu, warunku zakończenia ani przesuwania się po tablicy. W praktyce jest to bardzo wygodne przy wyświetlaniu listy produktów, przetwarzaniu danych z formularza, generowaniu elementów menu albo odczytywaniu wyników zapytania z bazy danych. W PHP można też użyć składni foreach ($tablica as $klucz => $wartosc), co pozwala pracować jednocześnie z indeksem lub kluczem oraz wartością. Moim zdaniem to jedna z najczytelniejszych pętli do pracy z tablicami, bo kod od razu pokazuje intencję programisty. Dobra praktyka jest taka, żeby foreach stosować wtedy, gdy chcemy przejść przez całą kolekcję, bez ręcznego sterowania licznikiem. Kod jest wtedy krótszy, mniej podatny na pomyłki i łatwiejszy do utrzymania.
Opis z pytania dotyczy mechanizmu typowego dla foreach, a nie zwykłej pętli sterowanej warunkiem albo licznikiem. Pętla for bardzo często służy do iteracji po tablicy, ale wymaga samodzielnego ustawienia licznika, warunku zakończenia i kroku, na przykład zwiększania indeksu o 1. Czyli programista pisze logikę przechodzenia po elementach ręcznie. To jest dobre, gdy trzeba przeskakiwać co drugi element, iść od końca albo mieć pełną kontrolę nad indeksem, ale nie pasuje idealnie do zdania o automatycznym przypisywaniu bieżącego elementu do zmiennej.
while działa jeszcze ogólniej: wykonuje blok kodu dopóki warunek jest prawdziwy. Sama z siebie nie wie nic o tablicy, jej elementach ani przesuwaniu wskaźnika. Jeśli używa się while do przechodzenia po danych, to zwykle trzeba dodatkowo zadbać o zmianę indeksu lub pobranie następnego elementu. Typowy błąd myślowy polega na tym, że ktoś kojarzy każdą pętlę z iteracją po tablicy, ale nie każda pętla robi to automatycznie.
next w PHP nie jest klasyczną instrukcją pętli, tylko funkcją przesuwającą wewnętrzny wskaźnik tablicy na następny element. Może być użyta pomocniczo, ale sama nie wykonuje powtarzania bloku instrukcji tak jak foreach. W nowoczesnym, czytelnym kodzie do przechodzenia po wszystkich elementach tablicy najczęściej wybiera się foreach, bo jasno pokazuje zamiar, ogranicza ryzyko błędów indeksowania i dobrze pasuje do standardowych zadań webowych, np. obsługi danych formularza czy budowania listy na stronie.
while działa jeszcze ogólniej: wykonuje blok kodu dopóki warunek jest prawdziwy. Sama z siebie nie wie nic o tablicy, jej elementach ani przesuwaniu wskaźnika. Jeśli używa się while do przechodzenia po danych, to zwykle trzeba dodatkowo zadbać o zmianę indeksu lub pobranie następnego elementu. Typowy błąd myślowy polega na tym, że ktoś kojarzy każdą pętlę z iteracją po tablicy, ale nie każda pętla robi to automatycznie.
next w PHP nie jest klasyczną instrukcją pętli, tylko funkcją przesuwającą wewnętrzny wskaźnik tablicy na następny element. Może być użyta pomocniczo, ale sama nie wykonuje powtarzania bloku instrukcji tak jak foreach. W nowoczesnym, czytelnym kodzie do przechodzenia po wszystkich elementach tablicy najczęściej wybiera się foreach, bo jasno pokazuje zamiar, ogranicza ryzyko błędów indeksowania i dobrze pasuje do standardowych zadań webowych, np. obsługi danych formularza czy budowania listy na stronie.