Temat: Instrukcje sterujące w PHP

Instrukcja warunkowa – służy do sprawdzania warunków dla danej aplikacji. Mają one za zadanie wykonać określone instrukcje w zależności od spełnionego pewnego warunku. Instrukcja ta występuje w dwóch postaciach: niepełnej i pełnej.

Najprostszą instrukcją warunkową jest niepełna instrukcja warunkowa:

if (wyrażenie)
{
//instrukcje które mają się wykonać przy spełnieniu warunku
}

Jeżeli wyrażenie podane w nawiasie ma wartość logiczną TRUE, to są wykonywane instrukcje ograniczone klamrami. W przeciwnym wypadku następuje przejście do kolejnej sekwencji programu.

Przykład:

$zmienna = 4;
if ($zmienna % 2==0)
{
echo "Liczba jest parzysta";
}
?>

Sprawdzany jest warunek, czy $zmienna jest liczbą parzystą (czyli reszta z dzielenia przez 2 wynosi 0). Jeżeli to prawda (TRUE) to wyświetli się tekst “Liczba jest parzysta”.

Pełna instrukcja warunkowa w tym przypadku będzie wyglądać następująco:

$zmienna = 5;
if ($zmienna % 2==0)
{
echo "Liczba jest parzysta";
}
else
{
echo "Liczba jest nieparzysta"
}
?>

Klauzula else określa, co ma się stać, gdy warunek nie zostanie spełniony. Jeśli mamy do sprawdzenia kilka możliwości, musimy skorzystać z klauzuli elseif.

Weźmy pod uwagę program, który sprawdza, czy podana liczba jest podzielna przez 8. Wiemy, że każda liczba podzielna przez 8 jest podzielna przez 2 i przez 4. Do sprawdzenia tych warunków możemy użyć kilku oddzielnych instrukcji niepełnych. Jednak jeśli podamy liczbę podzielną przez 8, to będą spełnione 3 warunki i będą wykonane 3 instrukcje. Jeżeli zastosujemy klauzulę elseif, to zostanie wykonana tylko jedna instrukcja.

Przykład:

$zmienna = 34;  - Przypisanie wartości zmiennej
if ($zmienna % 8==0)
- Sprawdzanie czy liczba podzielna jest przez 8
{
echo "Liczba $zmienna jest podzielna przez 8";
}
elseif ($zmienna % 4==0)
- Sprawdzanie czy liczba podzielna jest przez 4
{
echo "Liczba $zmienna jest podzielna przez 4, ale nie przez 8";
}
elseif ($zmienna % 2==0)
- Sprawdzanie czy liczba podzielna jest przez 2
{
echo "Liczba $zmienna jest podzielna przez 2, ale nie przez 4";
}
else
- wyświetli tekst, gdy wszystkie powyższe warunki nie zostały spełnione
{
echo "Liczba $zmienna jest nieparzysta";
}
?>

Poprzez zastosowanie klauzuli elseif możemy jednocześnie rozważyć kilka możliwości. Gdy jedna z nich zostanie spełniona, pozostałe nie będą już sprawdzane

Podobnie jak w javascript czy C++ warunki można łączyć za pomocą operatorów logicznych.

Przykład:

$zmienna = -5;
if ($zmienna >= -5 && $zmienna <= 20)
{
echo "Liczba $zmienna należy do przedziału [-5,20]";
}
else
{
echo "Liczba $zmienna nie należy do przedziału [-5,20]";
}
?>

W przykładzie sprawdzamy, czy podana liczba jest większa lub równa -5 i jednocześnie mniejsza lub równa 20. Zastosowaliśmy operator logiczny &&.

Zadanie:

Porównaj ze sobą dwie liczby. Wyświetl odpowiedni tekst, jeżeli a>b, b>a lub a=b.

Instrukcja SWITCH – jest instrukcją wyboru. Wyrażenie występujące w konstrukcji jest porównywane z listą szukanych wartości aż do znalezienia wartości pasującej.

switch (wyrażenie)
{
case wart1:
instrukcje1;
break;
case wart2:
instrukcje2;
break;
...
case wartN:
instrukcjeN;
break;
default:
instrukcje;
}

Instrukcja switch sprawdza wartość wyrażenia. Jeżeli wynikiem jest wart1, to zostaną wykonane instrukcje1 i następuje wyjście z bloku switch (poleceniem break).

<?php
$liczba = 6;
switch($liczba)
{
case 1: echo "styczeń";
break;
case 2: echo "luty";
break;
case 3: echo "marzec";
break;
case 4: echo "kwiecień";
break;
case 5: echo "maj";
break;
case 6: echo "czerwiec";
break;
case 7: echo "lipiec";
break;
case 8: echo "sierpień";
break;
case 9: echo "wrzesień";
break;
case 10: echo "październik";
break;
case 11: echo "listopad";
break;
case 12: echo "grudzień";
break;
default: echo "Jest tylko 12 miesięcy";
}
?>

Każdą instrukcję switch można zastąpić instrukcją warunkową z klauzulą elseif.

Zadanie:

Napisz instrukcję switch, która na podstawie zmiennej całkowitej $ocena wyświetla jedną z informacji:

  • brak promocji do następnej klasy (dla oceny 1),
  • promocja do następnej klasy (dla oceny 2,3,4,5),
  • promocja z ocena celująca (dla 6).