PHP 8 i 8.1 - sprawdź co nowego!

Struktury kontrolne > Lekcja 4

Pętla for

Pętle w programowaniu służą do wielokrotnego powtarzania operacji. Istnieje kilka rodzajów pętli - w tej lekcji powiemy o pętli for, a pozostałe poznamy w kolejnych.

Poznajmy najpierw podstawowy zapis pętli for:

<?php
for (inicjalizacja; wyrażenie; po iteracji) {
    // instrukcje do wykonania za każdym przejściem pętli
}
  • inicjalizacja to instrukcja do wykonania przed rozpoczęciem wykonywania pętli
  • wyrażenie - kolejne przejście pętli zostanie wykonane tylko, jeśli będzie ono prawdziwe (true)
  • po iteracji będzie wykonywane właśnie po każdej iteracji (czyli po każdym przejściu pętli)
  • w klamrach zapisujemy instrukcje do wykonania w każdej iteracji pętli

Pora na konkretny przykład. Wypiszmy liczby od 1 do 10 przy użyciu for.

<?php
for ($number = 1; $number <= 10; $number++) {
    echo $number . ' ';
}
// result: 1 2 3 4 5 6 7 8 9 10

Dla pewności wytłumaczę jeszcze raz, krok po kroku.

  • $number = 1 inicjuje zmienną z wartością 1
  • $number <= 10 sprawdza, czy wartość zmiennej $number jest mniejsza lub równa 10 i tylko jeżeli tak wykonuje iteracje pętli
  • $number++ po każdym przejściu pętli zwiększa wartość zmiennej o 1

Uwaga

Pomiędzy kolejnymi wyrażeniami w pętli koniecznie należy zapisać średniki ;.

Podobnie jak w przypadku instrukcji warunkowych, użycie klamer nie jest konieczne, jeśli zapiszemy tylko jedną instrukcję do wykonania. Proponuję jednak zawsze je zapisywać, aby kod był czytelniejszy.

Nic oczywiście nie stoi na przeszkodzie, aby zdefiniować zmienną o innej wartości lub wykonywać inną operację, niż zwiększanie wartości.

<?php
for ($number = 20; $number >= 0; $number -= 5) {
    echo $number . ' ';
}
// result: 20 15 10 5 0

Również, tak jak we wcześniejszych instrukcjach, istnieje tutaj alternatywny zapis z : i endfor.

Dokumentacja: www.php.net/manual/en/control-structures.for.php

Nieskończona pętla

Co się stanie, jeśli wpiszemy w pętli warunek (wyrażenie), które zawsze będzie prawdziwe, nigdy nie stanie się fałszywe? Stworzymy pętlę, która nigdy się nie skończy, będzie ciągle wykonywana. Może to spowodować większe obciążenie naszego komputera/serwera.

Jesteśmy jednak poniekąd zabezpieczeni przed niezamierzonym stworzeniem takiej pętli - domyślnie skrypt uruchomiony przez serwer www będzie wykonywany przez 30 sekund, po czym zostanie przerwany. W razie potrzeby możemy znieść ten limit ustawieniem w php.ini lub funkcją set_time_limit().

Niekończącą się pętlę możemy stworzyć również takim zapisem:

<?php
for (;;) {

}

W praktyce raczej rzadko używa się takich konstrukcji celowo. PHP nie jest językiem, który ma działać gdzieś cały czas. Analogicznie możemy oczywiście stworzyć pętlę, która się wcale nie uruchomi i nie przejdzie ani jednej iteracji - wystarczy warunek, który nigdy się nie spełni.

Ćwiczenia

  1. Dana jest liczba 50. Zmniejszaj ją o 8 i wypisuj pomniejszoną wartość, ale tylko do momentu, gdy liczba ta będzie większa od 0. Użyj pętli for.

    Przykładowe rozwiązanie

  2. Korzystając z jednej pętli for oblicz sumę wszystkich liczb parzystych z zakresu od 0 do 100 i wyświetl ją na ekranie. Dodatkowo policz ilość liczb parzystych większych od 50.

    Przykładowe rozwiązanie

  3. (Trudniejsze) Wykonaj tabliczkę mnożenia w postaci prostej tabeli. Przykładowy efekt, jaki należy uzyskać:

    Przykładowy efekt ćwiczenia 3
    Podpowiedź: należy użyć dwóch pętli for i umieścić jedną wewnątrz drugiej. Przejście do nowej linii w przypadku uruchamiania przez terminal to na przykład stała PHP_EOL, a jeśli kod uruchamiasz poprzez serwer www i przeglądarkę znacznik <br> z HTML.

    Przykładowe rozwiązanie

Poprzednia lekcja Następna lekcja

Udostępnij

  • Facebook
  • Twitter

Komentarze