for ($i = 0; $i < 5; $i++) { ... } wykonuje blok stałą liczbę razy. Trzy części to start ($i = 0, wykonywany raz), warunek ($i < 5, sprawdzany przed każdym przebiegiem) i krok ($i++, wykonywany po każdym przebiegu). Pętla kończy się, gdy tylko warunek staje się fałszywy.
$i istnieje także po pętli i ma wartość, przy której warunek stał się fałszywy (6). PHP nie ma zasięgu blokowego dla zmiennych pętli.
Przechodzenie po tablicy z indeksem
Dla listy z kluczami 0, 1, 2 ... licznik służy zarazem za indeks. Najpierw zapisz count() w zmiennej, żeby nie wywoływać go przy każdym przebiegu.
Pierwsza część może zawierać kilka wyrażeń rozdzielonych przecinkami i właśnie tak $n = count($fruits) ustawia się tylko raz. Gdy potrzebujesz tylko każdej wartości (a nie jej sąsiadów), foreach jest krótszy i działa też na tablicach, których klucze nie idą od 0 do n - 1.
Odliczanie w dół i krok większy niż 1
Krok może być dowolnym wyrażeniem: $i--, aby odliczać w dół, $i += 2 dla co drugiej liczby, $i *= 2 dla potęg dwójki.
range('a', 'h') buduje tablicę ['a', 'b', ... 'h']. Z range(1, 10) i foreach uzyskasz to samo liczenie co w pętli for, kosztem zbudowania najpierw całej tablicy.
break i continue
break od razu kończy pętlę. continue pomija resztę bieżącego przebiegu i przechodzi do kroku oraz kolejnego sprawdzenia warunku.
Druga pętla ma pusty warunek, co oznacza „zawsze prawda”, więc działa aż do break. W pętlach zagnieżdżonych break 2 i continue 2 działają na pętlę zewnętrzną, co pokazuje następny przykład.
Zagnieżdżone pętle for: tabliczka mnożenia
Pętla w pętli wykonuje pętlę wewnętrzną w całości przy każdym przebiegu zewnętrznej. Tutaj wynikiem jest HTML, więc zakładka Page pokazuje prawdziwą tabelę.
Zmień $size na 12 i uruchom ponownie. Forma for (...): z endfor; to składnia alternatywna, dzięki której pętle między znacznikami HTML pozostają czytelne. Ta sama tabela zbudowana jako zwykły tekst, z break 2, które zatrzymuje obie pętle:
Częste błędy: pomyłka o jeden i pętla nieskończona
Dwa klasyczne błędy w for: użycie <= z count() odczytuje jeden element za końcem, co PHP zgłasza jako Warning: Undefined array key 3 i traktuje jako null; a krok, który nie przesuwa licznika w stronę końca ($i-- zamiast $i++), sprawia, że warunek jest prawdziwy w nieskończoność.
Do pętli, których długości nie znasz z góry, na przykład przy czytaniu pliku do końca, lepiej pasuje pętla while.
Najczęściej zadawane pytania
Jak przejść po tablicy z indeksem w PHP?
Dla listy z kluczami 0, 1, 2 użyj for ($i = 0; $i < count($arr); $i++) { echo $arr[$i]; }. W większości kodu prostsze jest foreach ($arr as $i => $value): daje ten sam indeks i działa też wtedy, gdy klucze nie idą od 0 do n minus 1.
Jak przerwać pętlę for w PHP?
break; natychmiast opuszcza pętlę. W pętlach zagnieżdżonych break 2; opuszcza pętlę wewnętrzną i tę, która ją otacza. continue; pomija resztę bieżącego przebiegu i przechodzi do następnego.
Jak odliczać w dół pętlą for w PHP?
Zacznij od dużej wartości, porównuj przez >= i zmniejszaj: for ($i = 10; $i >= 1; $i--) { echo $i; }. Dla kroku innego niż jeden zmień trzecią część, na przykład $i += 2 albo $i -= 5.
Kiedy używać for zamiast foreach w PHP?
Używaj for, gdy coś liczysz (powtórz 5 razy, liczby od 1 do 100, co drugi element) albo potrzebujesz następnego lub poprzedniego elementu przez indeks. Używaj foreach, aby odwiedzić każdy element tablicy, zwłaszcza tablicy asocjacyjnej, w której nie ma indeksu liczbowego.