Spis treści

 

 

Instrukcje warunkowe

Instrukcje warunkowe sÄ… podstawÄ… każdego jÄ™zyka programowania. Używa siÄ™ jej do wykonania pewnej instrukcji (lub bloku instrukcji), ale tylko w pewnych okolicznoÅ›ciach – zostanie speÅ‚niony okreÅ›lony warunek (lub caÅ‚y zestaw warunków).

Przykład 4.1. Składnia instrukcji warunkowej


<?php
if(wyrażenie_warunkowe)
   instrukcja wykonywana jeśli spełniony zostanie warunek
elseif(inne_wyrażenie_warunkowe)
   instrukcja wykonywana jeśli spełniony zostanie drugi warunek, a pierwszy nie
else
   instrukcja wykonywana jeśli nie zostanie spełniony żaden z warunków
?>

Wyrażeniem warunkowym jest w zasadzie dowolne wyrażenie, ponieważ za warunek uznawane jest wszystko co zwraca wartość, czyli wszystkie zmienne, wyrażenia logiczne, funkcje itp. Za spełniony warunek uznawana jest wartość większa od zera.

Przykład 4.2. Przykład instrukcji warunkowej


<?php

   $a = 2;
   $b = 5;
   $c = 1;

   if($a > $b)
      echo "$a jest większe od $b";
   elseif ($b > $c)
      echo "$b jest większe od $c";
   else
      echo "$c jest większe od $a i $b";

   if($a)
      echo "Zmienna $a ma wartość większą od zera";

?>

Jeśli chcemy, aby po sprawdzeniu warunku wykonane zostało nie jedno, ale kilka poleceń, to te polecenia trzeba ująć w nawiasy klamrowe. Bez tego warunkiem objęta by była tylko jedna instrukcja po instrukcji if.

Instrukcje mogą być zagnieżdżane wewnątrz siebie.

Przykład 4.3. Zagnieżdżanie instrukcji warunkowych


<?php

$a = 6;
$b = 5;
$c = 1;

if($a > $b){

   echo "$a jest większe od $b";   

   if($a > $c)
      echo " i od $c"; // Powinien zostać wyświetlony napis "6 jest większe od 5 i od 1"

}

?>

OczywiÅ›cie możliwe jest korzystanie z warunków bardziej zÅ‚ożonych niż pojedyÅ„cze porównanie wielkoÅ›ci zmiennych – do Å‚Ä…czenia warunków niezbÄ™dne jest wykorzystanie operatorów logicznych opisanych w poprzednim rozdziale. Operator logiczny OR (lub) ma wiÄ™kszy priorytet niż operator AND (i), wiÄ™c aby sprawdzić jakiÅ› warunek gdzie konieczna jest inna kolejność, niezbÄ™dne jest użycie nawiasów grupujÄ…cych warunki. Na przykÅ‚ad chcemy aby jakaÅ› instrukcja byÅ‚a wykonana jeÅ›li zmienna $a jest wiÄ™ksza od $b lub $c, i zmienna $d byÅ‚a równa $e. JeÅ›li chcielibyÅ›my zapisać to bez żadnych nawiasów: $a > $b || $a > $c && $d == $e to efekt byÅ‚by zupeÅ‚nie inny od zamierzonego: instrukcja byÅ‚a by wykonana jeÅ›li $a byÅ‚o by wiÄ™ksze od $b, lub jeÅ›li $a byÅ‚o by wiÄ™ksze od $a i $d byÅ‚o by równe $e. Poprawna konstrukcja to ($a > $b || $a > $c) && $d == $e.

Przykład 4.4. Grupowanie warunków


<?php

$a = 6;
$b = 5;
$c = 7;
$d = 6;
$e = 6;

if( ($a > $b || $a > $c) && // Nawiasy klamrowe nie sÄ… potrzebne - to
      $d == $e )            // 2 linie ale jedna instrukcja
   echo 'Zmienna $a jest większa od $b a zmienna $d jest równa $e, '.
      'więc ten tekst pokaże się.';   // Taka konstrukcja jest dozwolona

?>

 

 

Pętla FOR

Czasem zachodzi potrzeba wykonania jakiejś czynności określoną ilość razy. Z pomocą przychodzi jedna z najczęściej używanych składni w większości języków programowania, czyli pętla FOR. Ogólny zapis wygląda tak:

Przykład 4.5. Pętla FOR


<?php

for( inicjalizacja zmiennych ; sprawdzenie warunku ; modyfikacja zmiennych) {

   blok wyrażeń 

}

?>

Jak widać, w tej pÄ™tli podaje siÄ™ 3 wyrażenia jako parametry: inicjalizacjÄ™ zmiennych, czyli ustawienie poczÄ…tkowych wartoÅ›ci dla zmiennych kontrolujÄ…cych pÄ™tlÄ™, sprawdzenie warunku, czyli wyrażenie logiczne kontrolujÄ…ce pÄ™tlÄ™ – pÄ™tla bÄ™dzie wykonywana dopóki ten warunek jest prawdziwy, oraz modyfikacjÄ™ zmiennych kontrolujÄ…cych pÄ™tlÄ™ – bez tego pÄ™tla bÄ™dzie wykonywaÅ‚a siÄ™ w nieskoÅ„czoność (oczywiÅ›cie wartość tych zmiennych można modyfikować wewnÄ…trz pÄ™tli, ale jest to niezalecane). PrzykÅ‚ad najprostszej pÄ™tli, która wypisze cyfry od 1 do 10:

Przykład 4.6. Przykład użycia pętli for


<?php

for( $x = 1; $x <= 10; $x++ )
   echo $x."<br>";

?>

 

 

Pętla while

Innym rodzajem pętli jest pętla WHILE. Jest ona wykorzystywana w sytuacjach, kiedy niezbędne jest wykonywanie jakiejś operacji dopóki nie zostanie spełniony warunek.

Przykład 4.7. Pętla while


<?php

while( warunek ){
   ...
   instrukcje
   ...
}

?>

Można na przykład za pomocą tej pętli zapisać odpowiednik pętli FOR z poprzedniego przykładu.

 

Przykład 4.8. Przykład użycia pętli while


<?php

$x=1;
while($x <= 10){
   echo $x."<BR>";
   $x++;
}

?>

 

 

PÄ™tla do…while

OdmianÄ… pÄ™tli while jest pÄ™tla do…while. Od zwykÅ‚ej pÄ™tli while różni siÄ™ ona tym, że polecenia zawarte w pÄ™tli bÄ™dÄ… przynajmniej raz wykonane – w przypadku pÄ™tli while tak być nie musi, to znaczy jeÅ›li za pierwszym razem warunek nie zostanie speÅ‚niony to polecenia z pÄ™tli nigdy nie zostanÄ… wykonane. W przypadku tej pÄ™tli zostano one wykonane przynajmniej ten pierwszy raz.

PrzykÅ‚ad 4.9. PÄ™tla do … while


<?php

do {
   ...
   instrukcje
   ...
} while( warunek );

?>

 

 

Przerywanie wykonań pętli

Czasem zachodzi potrzeba przerwania danej iteracji (powtórzenia) pętli i przejścia do następnej iteracji. Z pomocą wtedy przychodzi instrukcja continue. Wystarczy wstawić ją w odpowiednie miejsce wewnątrz pętli. Przykład (niezbyt wyszukany):

Przykład 4.10. Instrukcja continue


<?php

for($x = 1; $x<=100; $x++) {

   if($x % 2 != 0)
      continue;

   echo $x." ";
}

?>

Po uruchomieniu powyższego przykładu powinniśmy zobaczyć liczby parzyste od 1 do 100. Oczywiścje można to zapisać łatwiej.

Przykład 4.11. Wyświetlanie liczb parzystych


<?php

for($x = 2; $x <= 100; $x+=2) {
      echo $x." ";
}

?>

Istenie też polecenie, które powoduje caÅ‚kowite wyjÅ›cie z pÄ™tli – nie tylko z bieżącej iteracji. To polecenie to "literal">brake. Załóżmy, że zmienna $nazwa to zmienna podana z formularza:

Przykład 4.12. Instrukcja brake


<?php

for($x = 0; $x<10; $x++) {
   if($x%2==0)
      echo $x." ";
   if($nazwa == "Test1")
      break;
}

?>

 

 

Składnia switch

SkÅ‚adnia switch jest instrukcjÄ… warunkowÄ…, ale jednÄ… zmiennÄ… można porównać nie z jednÄ… wartoÅ›ciÄ…, ale z kilkoma. Niestety nie można konstruować zÅ‚ożonych warunków – możliwe jest tylko proste porównywanie (równoważne instrukcji: if($zmienna=="wartość") instrukcja).

Przykład 4.13. Składnia switch


<?php

switch($zmienna){
   case 'wartość1':
      ...
   instrukcje
   ...
   break;
   case 'wartość2':
      ...
   instrukcje
   ...
   break;
   default:
      ...
   instrukcje
   ...
}

?>

Instrukcje zawarte po identyfikatorze „default” wykonywane sÄ… jeÅ›li zmienna $zmienna nie przyjęła wartoÅ›ci „wartość1” i „wartość2” (dla tego przykÅ‚adu). Aby móc dobrze wykorzystać tÄ… skÅ‚adniÄ™ warto jest dokÅ‚adnie wiedzieć jak ona dziaÅ‚a. Instrukcje sÄ… przetwarzane linia po linii. Parser przechodzi do pierwszej linii „case” pasujÄ…cej do zmiennej. NastÄ™pnie przetwarzane sÄ… wszystkie linie wewnÄ…trz nawiasów klamrowych aż do napotkania instrukcji break – nawet jeÅ›li po drodze znajdujÄ… siÄ™ instrukcje „case”.

Przykład 4.14. Przykład użycia składni switch


<?php

$i = 3;

switch($i){
   case 0:
   case 1:
   case 2:
   case 3:
      echo "Zmienna $i jest mniejsza bądź równa od trzech\n";
   break;
   case 4:
      echo "Zmienna $i jest równa cztery\n";
   break;
   default:
      echo "Zmienna $i jest większa od czterech\n";
}

?>