
PHP: Pętle
Mechanizm wielokrotnego wykonywania tej samej grupy czynności.
Pierwszą z omawianych przeze mnie mechanizmów pętli będzie FOR.
for(wartości_początkowe;warunek;zmiana){ instrukcje; }
Składa się z 3 elementów zamkniętych pomiędzy nawiasami okrągłymi, oddzielonymi od siebie średnikami.
Pierwszy z elementów to wartości początkowe zmiennych – blok ten wykonuje się raz, na początku działania pętli.
Drugi to warunek lub warunki zakończenia pętli – sprawdzane na początku każdego obiegu pętli.
Trzeci to blok instrukcji wykonywanych na koniec każdego obiegu pętli, najczęściej inkrementacja zmiennej i 🙂
Klamry standardowo zawierają blok instrukcji do wykonania w każdym obiegu pętli.
Przykład…
for($i=0; $i<10; $i++){ echo 2*$i."<br>"; }
Wartość początkowa: zmienna $i o wartości 0.
Warunek zakończenia pętli: działamy dopóki $i jest mniejsze od 10.
Zmiany na koniec każdego obiegu pętli: $i zwiększamy o 1.
Ile będzie obiegów pętli, tzn. ile razy wykona się blok instrukcji zawarty pomiędzy klamrami?
10, bo zmienna $i będzie kolejno przyjmowała wartości: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9… a jak przeskoczy na 10, to warunek zakończenia spowoduje przerwanie działania pętli i jej zakończenie.
W powyższym przykładzie blok instrukcji zawiera wypisanie 2*$i, co spowoduje wypisywanie na ekran wartości 2 razy większych niż wynosi w danym momencie wartość zmiennej $i, czyli 0, 2, 4, 8, itd.
Kolejny przykład pokazuje, że w poszczególne bloki wewnątrz nawiasów okrągłych można umieścić więcej niż 1 instrukcję. Są one oddzielone od siebie przecinkami.
for($i=0,$k=5; $i<10; $i++,$k+=3){ echo $k; }
Pętla wykona się 10 razy, bo za ilość obiegów pętli, zgodnie z warunkiem zakończenia odpowiada zmienna $i.
Na ekran zostaną wypisane liczby, począwszy od 5 (wartość początkowa zmiennej $k), następnie z każdym obiegiem pętli zwiększane o 3.
Kolejnym przykładem będzie pętla for, która nie ma warunku zakończenia.
for($p=1;;$p++){ echo $p; if($p == 7) break; }
Brak warunku zakończenia powoduje nieskończone działanie pętli.
Istnieją jednak specjalne instrukcje przerywające działanie pętli:
- continue – przerywa obecny obieg pętli, pomija kolejne instrukcje, przechodzi do kolejnego obiegu
- break – przerywa działanie pętli, program przechodzi za klamrę zamykającą pętlę }
W przypadku dojścia zmiennej $p do osiągnięcia wartości 7 postanowiliśmy w naszym przykładzie przerwać działanie pętli. To tak, jakby w warunku zakończenia dać: działaj dopóki $p<8 lub $p<=7.
Kolejnym rodzajem pętli jest while.
while(warunek){ instrukcje; zmiana; }
While zbudowany jest w podobny sposób jak instrukcja warunkowa if i jest jej wielokrotnością – wykonuje instrukcje w kółko, dopóki nie zostanie spełniony warunek zakończenia.
Przykładowe przeniesienie naszego pierwszego przykładu z pętli for na while.
$i=0; while($i<10){ echo $i." "; $i++; }
Wartości początkowe zmiennych znajdują się jeszcze przed pętlą, warunek zakończenia jest na swoim miejscu, natomiast zmiany, które w pętli for były w 3 bloku, tu są na końcu bloku instrukcji.
Wartość $i = 0. Działaj dopóki $i jest mniejsze od 10. Wypisuj wartość $i na ekran i zwiększaj wartość $i o 1.
Kolejny przykład, to nieskończona pętla while (warunek zakończenia = 1, czyli zawsze prawdziwy).
$p=1; while(1){ echo $p; if($p==7) break; $p++; }
Podobnie jak w poprzednim przypadku wykorzystaliśmy instrukcję break do przerwania pętli.
Do while jest pętlą różniącą się od pętli while nie tylko kolejnością zapisu warunku i bloku instrukcji, ale również faktem, że pętla while w przypadku nie spełnienia warunku nie wykona się wcale, natomiast blok do{} wykona się jeden raz zawsze, dopiero później sprawdzi, czy warunek jest prawdziwy i czy nadal pętla ma biec.
do{ instrukcje; }while(warunek);
Kolejny raz przykład z wypisaniem liczb 0 – 9.
$i=0; do{echo $i; $i++;} while($i<10);
Ostatnim przykładem pętli, jest foreach, działający na elementach tablicy.
$tablica; foreach($tablica as $element){ instrukcje; }
Pobiera ona kolejne elementy tablicy i pozwala wykonać na nich dalsze czynności.
$tablica = array(1, 2, 3, 4); foreach ($tablica as $element) { echo $element." "; }
Prosty przykład z tablicą zawierającą w sobie 4 elementy, liczby 1,2,3 oraz 4.
Foreach pobiera poszczególne elementy tablicy $tablica jako $element, następnie wypisuje je na ekran.