PHP

PHP: Pętle

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.