Logo

PHP - Instrukcje sterujące i pętle

Opis: Zostaną omówione instrukcje sterujące i pętle w języku PHP, w tym instrukcje warunkowe if, else if i else, instrukcja switch oraz pętle for, while i foreach, umożliwiające podejmowanie decyzji i wielokrotne wykonywanie fragmentów kodu.

PHP - Instrukcje warunkowe if

Instrukcja warunkowa if w języku PHP służy do wykonywania określonego fragmentu kodu tylko wtedy, gdy spełniony zostanie podany warunek. Warunek ten jest wyrażeniem logicznym, które może przyjmować wartość prawda (true) lub fałsz (false). Dzięki instrukcjom warunkowym program może reagować na różne sytuacje i dane wejściowe.

Instrukcja if

Instrukcja if sprawdza, czy dany warunek jest spełniony. Jeżeli warunek jest prawdziwy, kod znajdujący się w jej wnętrzu zostaje wykonany.

Składnia:

if (warunek) {
    // kod wykonywany, gdy warunek jest spełniony
}

Przykład:

<?php
$wiek = 18;

if ($wiek >= 18) {
    echo "Użytkownik jest pełnoletni.";
}
?>

W powyższym przykładzie komunikat zostanie wyświetlony tylko wtedy, gdy wartość zmiennej $wiek jest większa lub równa 18.

Instrukcja if ... else

Instrukcja else pozwala określić, co ma się wydarzyć, gdy warunek w instrukcji if nie zostanie spełniony.

Składnia:

if (warunek) {
    // kod, gdy warunek jest spełniony
} else {
    // kod, gdy warunek nie jest spełniony
}

Przykład:

<?php
$temperatura = 10;

if ($temperatura > 20) {
    echo "Jest ciepło.";
} else {
    echo "Jest chłodno.";
}
?>

Program wyświetli jeden z dwóch komunikatów w zależności od wartości zmiennej $temperatura.

Instrukcja if ... elseif ... else

Instrukcja elseif umożliwia sprawdzenie wielu warunków po kolei. Gdy pierwszy warunek nie zostanie spełniony, sprawdzany jest kolejny. Wykonany zostaje tylko pierwszy pasujący blok kodu.

Składnia:

if (warunek1) {
    // kod dla pierwszego warunku
} elseif (warunek2) {
    // kod dla drugiego warunku
} else {
    // kod, gdy żaden warunek nie jest spełniony
}

Przykład:

<?php
$ocena = 4;

if ($ocena == 5) {
    echo "Bardzo dobry";
} elseif ($ocena == 4) {
    echo "Dobry";
} elseif ($ocena == 3) {
    echo "Dostateczny";
} else {
    echo "Ocena niedostateczna";
}
?>

W tym przykładzie program sprawdza kolejne wartości zmiennej $ocena i wyświetla odpowiedni komunikat.

Zastosowanie instrukcji warunkowych w praktyce

Instrukcje if, elseif i else są wykorzystywane m.in. do:

  • sprawdzania poprawności danych,

  • kontroli dostępu użytkownika,

  • podejmowania decyzji na podstawie wieku, wyniku, statusu,

  • dynamicznego generowania treści na stronie internetowej.

Operator warunkowy ? : (operator trójargumentowy)

Operator ? :, nazywany operatorem warunkowym lub operatorem trójargumentowym, stanowi skróconą formę instrukcji if ... else. Umożliwia on przypisanie wartości lub wykonanie prostej operacji w zależności od spełnienia warunku, zapisanej w jednej linii kodu.

Składnia operatora ? :

warunek ? wartość_gdy_true : wartość_gdy_false;

Jeżeli warunek jest spełniony (true), zwracana jest pierwsza wartość. W przeciwnym przypadku zwracana jest druga wartość.

Przykład:

<?php
$wiek = 20;

$status = ($wiek >= 18) ? "Pełnoletni" : "Niepełnoletni";

echo $status;
?>

W tym przykładzie, w zależności od wartości zmiennej $wiek, do zmiennej $status zostanie przypisana odpowiednia wartość tekstowa.

Zastosowanie operatora warunkowego

Operator ? : jest szczególnie przydatny, gdy:

  • przypisywana jest wartość do zmiennej na podstawie warunku,

  • wyświetlany jest prosty komunikat,

  • zależy nam na zwięzłym i czytelnym kodzie.

Nie zaleca się stosowania operatora trójargumentowego do skomplikowanej logiki - w takich przypadkach czytelniejsza będzie klasyczna instrukcja if ... else.

PHP - Instrukcja switch

Instrukcja switch w języku PHP służy do wyboru jednego z wielu możliwych wariantów wykonania programu na podstawie wartości jednej zmiennej lub wyrażenia. Jest ona alternatywą dla rozbudowanej konstrukcji if ... elseif ... else, szczególnie wtedy, gdy porównujemy jedną zmienną z wieloma możliwymi wartościami.

Składnia instrukcji switch

switch (wyrazenie) {
    case wartosc1:
        // kod wykonywany, gdy wyrazenie == wartosc1
        break;

    case wartosc2:
        // kod wykonywany, gdy wyrazenie == wartosc2
        break;

    default:
        // kod wykonywany, gdy żadna wartość nie pasuje
}

Instrukcja switch porównuje wartość wyrażenia z kolejnymi przypadkami (case). Gdy znajdzie dopasowanie, wykonywany jest odpowiadający mu blok kodu.

Przykład:

<?php
$dzien = 3;

switch ($dzien) {
    case 1:
        echo "Poniedziałek";
        break;
    case 2:
        echo "Wtorek";
        break;
    case 3:
        echo "Środa";
        break;
    case 4:
        echo "Czwartek";
        break;
    case 5:
        echo "Piątek";
        break;
    default:
        echo "Weekend";
}
?>

W zależności od wartości zmiennej $dzien, wyświetlana jest nazwa odpowiedniego dnia tygodnia.

Znaczenie instrukcji break

Instrukcja break kończy działanie instrukcji switch. Jej brak powoduje tzw. przechodzenie dalej (fall-through), czyli wykonanie kolejnych przypadków. Jeżeli kilka instrukcji case występuje jedna po drugiej bez instrukcji break, wszystkie one zostaną przypisane do jednego wspólnego bloku kodu. Wykonanie nastąpi dla pierwszego dopasowanego przypadku.

Przykład:

<?php
$miesiac = 2;

switch ($miesiac) {
    case 12:
    case 1:
    case 2:
        echo "Zima";
        break;

    case 3:
    case 4:
    case 5:
        echo "Wiosna";
        break;

    case 6:
    case 7:
    case 8:
        echo "Lato";
        break;

    case 9:
    case 10:
    case 11:
        echo "Jesień";
        break;

    default:
        echo "Nieprawidłowy numer miesiąca";
}
?>

W tym przykładzie:

  • miesiące 12, 1 i 2 powodują wyświetlenie komunikatu "Zima",

  • różne wartości case prowadzą do jednego wyniku,

  • instrukcja break kończy działanie switch po wykonaniu bloku.

Instrukcja default

Blok default jest wykonywany wtedy, gdy żadna z wartości case nie pasuje do sprawdzanego wyrażenia. Jest on odpowiednikiem else w instrukcji if.

Przykład:

<?php
$numer = 10;

switch ($numer) {
    case 1:
        echo "Jeden";
        break;
    case 2:
        echo "Dwa";
        break;
    default:
        echo "Inna liczba";
}
?>

Instrukcja switch a if ... elseif

Instrukcja switch jest szczególnie przydatna, gdy:

  • porównywana jest jedna zmienna z wieloma możliwymi wartościami,

  • warunki są proste i oparte na równości,

  • zależy nam na czytelności kodu.

Dla bardziej złożonych warunków logicznych lepszym wyborem jest if ... elseif ... else.

PHP - Pętla while

Pętla while w języku PHP służy do wielokrotnego wykonywania określonego fragmentu kodu tak długo, jak spełniony jest podany warunek. Liczba powtórzeń nie musi być znana z góry - pętla działa do momentu, aż warunek przestanie być prawdziwy.

Składnia:

while (warunek) {
    // kod wykonywany, gdy warunek jest spełniony
}

Przed każdą iteracją sprawdzany jest warunek logiczny. Jeżeli jest on fałszywy już na początku, pętla nie wykona się ani razu.

Przykład:

<?php
$i = 1;

while ($i <= 5) {
    echo $i . "<br>";
    $i++;
}
?>

Pętla wyświetli liczby od 1 do 5. Zmienna $i jest zwiększana w każdej iteracji, co zapobiega nieskończonemu wykonywaniu pętli.

Pętla while z HTML

Pętla while może być użyta do dynamicznego generowania elementów HTML, podobnie jak pętla for.

<ul>
<?php
$i = 1;

while ($i <= 3) {
    echo "<li>Element listy $i</li>";
    $i++;
}
?>
</ul>

W efekcie zostanie wygenerowana lista HTML z trzema elementami.

Zastosowanie pętli while

Pętla while jest szczególnie przydatna, gdy:

  • liczba powtórzeń nie jest znana z góry,

  • wykonywanie pętli zależy od zmieniającego się warunku,

  • dane są przetwarzane do momentu spełnienia określonego warunku.

PHP - Pętla do ... while

Pętla do ... while w języku PHP służy do wielokrotnego wykonywania fragmentu kodu co najmniej jeden raz, niezależnie od tego, czy warunek początkowo jest spełniony. Różni się ona od pętli while tym, że warunek sprawdzany jest dopiero po wykonaniu kodu pętli.

Składnia:

do {
    // kod wykonywany w pętli
} while (warunek);

Kod znajdujący się w bloku do zostanie wykonany przynajmniej jeden raz, a następnie warunek zostanie sprawdzony.

Przykład:

<?php
$i = 1;

do {
    echo $i . "<br>";
    $i++;
} while ($i <= 5);
?>

Pętla wyświetli liczby od 1 do 5, podobnie jak pętla while, jednak różnica polega na kolejności sprawdzania warunku.

Zastosowanie pętli do ... while

Pętla do ... while jest przydatna, gdy:

  • kod musi wykonać się co najmniej jeden raz,

  • warunek zależy od danych uzyskanych wewnątrz pętli,

  • konieczne jest wykonanie operacji przed sprawdzeniem warunku.

PHP - Pętla for

Pętla for w języku PHP służy do wielokrotnego wykonywania tego samego fragmentu kodu, gdy z góry wiadomo, ile razy dana operacja ma zostać powtórzona. Jest ona jedną z najczęściej wykorzystywanych pętli i idealnie sprawdza się w sytuacjach, w których pracujemy z licznikami lub zakresami wartości.

Składnia:

for (inicjalizacja; warunek; modyfikacja) {
    // kod wykonywany w pętli
}

Każda część nagłówka pętli ma określone znaczenie:

  • inicjalizacja - utworzenie i ustawienie wartości początkowej licznika,

  • warunek - określa, jak długo pętla ma się wykonywać,

  • modyfikacja - zmiana wartości licznika po każdej iteracji.

Przykład:

<?php
for ($i = 1; $i <= 5; $i++) {
    echo $i . "<br>";
}
?>

Pętla wykona się pięć razy, a w przeglądarce zostaną wyświetlone liczby od 1 do 5, każda w nowej linii.

Przykład z HTML

Pętla for jest często wykorzystywana do dynamicznego generowania elementów HTML.

<ul>
<?php
for ($i = 1; $i <= 3; $i++) {
    echo "<li>Element listy $i</li>";
}
?>
</ul>

W wyniku działania pętli zostanie wygenerowana lista HTML z trzema elementami.

Zastosowanie pętli for

Pętla for jest wykorzystywana m.in. do:

  • powtarzania operacji określoną liczbę razy,

  • generowania list, tabel i innych elementów HTML,

  • wykonywania obliczeń w określonym zakresie,

  • pracy z indeksami.

PHP - Pętla foreach

Pętla foreach w języku PHP służy do iterowania po elementach tablicy. Jest to najwygodniejszy i najczęściej stosowany sposób przeglądania tablic, ponieważ nie wymaga używania licznika ani znajomości liczby elementów w zbiorze.

Składnia (tablica indeksowana):

foreach ($tablica as $wartosc) {
    // kod wykonywany dla każdego elementu tablicy
}

Składnia (tablica asocjacyjna):

foreach ($tablica as $klucz => $wartosc) {
    // kod wykonywany dla każdego elementu tablicy
}

W każdej iteracji pętli zmienna $wartosc (oraz opcjonalnie $klucz) przyjmuje kolejną wartość z tablicy.

Przykład (tablica indeksowana):

<?php
$kolory = ["czerwony", "zielony", "niebieski"];

foreach ($kolory as $kolor) {
    echo $kolor . "<br>";
}
?>

Pętla przejdzie kolejno przez wszystkie elementy tablicy i wyświetli ich wartości w przeglądarce.

Przykład (tablica asocjacyjna):

<?php
$uczen = [
    "imie" => "Jan",
    "wiek" => 17,
    "klasa" => "3A"
];

foreach ($uczen as $klucz => $wartosc) {
    echo $klucz . ": " . $wartosc . "<br>";
}
?>

W tym przypadku pętla foreach wyświetla zarówno klucze, jak i przypisane do nich wartości.

Pętla foreach z HTML

Pętla foreach bardzo często wykorzystywana jest do dynamicznego generowania elementów HTML.

<?php
$produkty = ["Laptop", "Telefon", "Tablet"];
?>

<ul>
<?php foreach ($produkty as $produkt): ?>
    <li><?php echo $produkt; ?></li>
<?php endforeach; ?>
</ul>

Każdy element tablicy zostanie wyświetlony jako osobny element listy HTML.

Zastosowanie pętli foreach

Pętla foreach jest stosowana m.in. do:

  • wyświetlania danych z tablic,

  • przetwarzania wyników z bazy danych,

  • generowania list, tabel i menu,

  • pracy z tablicami asocjacyjnymi.

Zadania - Instrukcje sterujące i pętle

1. Instrukcja if - weryfikacja danych

Zadeklaruj zmienną $punkty. Na jej podstawie wyświetl:

  • "Zaliczone", gdy liczba punktów >= 50

  • "Niezaliczone" w przeciwnym przypadku

Oczekiwany rezultat (dla 60):

Zaliczone

2. Instrukcja switch - system ocen

Zadeklaruj zmienną $ocena (1-6). Przy użyciu switch wyświetl odpowiadający opis oceny (np. 5 -> "Bardzo dobry").

Oczekiwany rezultat (dla 4):

Dobry

3. Pętla for - tabela HTML

Utwórz tabelę HTML z dwoma kolumnami:

  • liczba od 1 do 5,

  • jej kwadrat.

Oczekiwany rezultat:
Tabela zawierająca wiersze:

1

1

2

4

3

9

4

16

5

25

4. Pętla while - suma liczb

Oblicz sumę liczb od 1 do 5 przy użyciu pętli while i wyświetl wynik.

Oczekiwany rezultat:

Suma: 15

5. Pętla do ... while - minimalne wykonanie

Zadeklaruj zmienną $i = 6. W pętli do ... while wypisz wartość $i, dopóki $i <= 5.

Oczekiwany rezultat:

6

6. Pętla foreach - dane użytkownika

Utwórz tablicę asocjacyjną z danymi użytkownika (imie, wiek, miasto). Wyświetl dane w formacie:
klucz: wartość

Oczekiwany rezultat:

imie: Jan
wiek: 20
miasto: Szczecin

7. Zadanie złożone - filtrowanie danych

Utwórz tablicę liczb od 1 do 10. Przy użyciu pętli foreach i instrukcji if:

  • wyświetl tylko liczby parzyste,

  • każdą w nowej linii.

Oczekiwany rezultat:

2
4
6
8
10

8. Zadanie złożone - tablica produktów

Utwórz tablicę produktów (np. nazwa i cena).
Wyświetl je w formie listy HTML.
Dodatkowo:

  • jeśli cena > 100 -> dopisz "(drogi)"

  • w przeciwnym razie "(tani)"

Oczekiwany rezultat:
Lista HTML, np.:

Laptop - 3000 (drogi)
Mysz - 50 (tani)
Klawiatura - 150 (drogi)

9. Zadanie złożone - tabela + warunki

Utwórz tabelę HTML z liczbami od 1 do 10.
W drugiej kolumnie wyświetl:

  • "parzysta" lub "nieparzysta" (użyj if)

Oczekiwany rezultat:

1 | nieparzysta
2 | parzysta
3 | nieparzysta
...
10 | parzysta