Menu

Pętla for w PHP: składnia, tablice, break i continue

for ($i = 0; $i < 10; $i++) { ... } wykonuje blok określoną liczbę razy: wartość początkowa, warunek sprawdzany przed każdym przebiegiem i krok. Strona opisuje przechodzenie po tablicy przez indeks, odliczanie w dół, pętle zagnieżdżone, break i continue.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

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.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ