Menu
- Aktualności
- Mój startup Nowy odcinek
- Blogi ekspertów
- Projektowanie WWW
- Planowanie
- Hosting i domeny
- Organizacja i nawigacja
- Webdesign i grafika
- Warsztat - programy
- Tutoriale Photoshop
- Programowanie i tworzenie
- XHTML, HTML i CSS
- JavaScript, DOM i AJAX
- jQuery
- PHP i SQL
- Flash i ActionScript
- Dostępność i WAI
- Promowanie stron
- Pozycjonowanie
- Reklama i marketing
- Monitoring i statystyki
- Publicystyka
- Artykuły ogólne
- Społeczności
- Praca i zarabianie
- Wywiady
- Standardy sieciowe
- Zasoby
- Kursy
- Recenzje książek
- Linki
Dla webmastera
Kursy
Instrukcja warunkowa if
Instrukacja warunkowa if
Często będziemy chcieli wykonać jakieś działanie, ale tylko wtedy, gdy zostanie spełniony pewien warunek. W tym celu posłużymy się instrukcją if. Ma ona następującą postać:
| if (warunek_1) { blok instrukcji 1 } elseif (warunek_2) { blok instrukcji 2 } elseif (warunek_3) { blok instrukcji 3 ........ } else { blok instrukcji n } lub forma uproszczona: if (warunek) { blok instrukcji } |
Działanie tej instrukcji nie zbyt skomplikowane. Najpierw jest sprawdzana wartość warunku_1. Jeżeli jest on prawdziwy (czyli ma wartość TRUE) wykonywany jest blok instrukcji 1. Jeśli tak nie jest (czyli warunek_1 ma wartość FALSE) cały ten blok jest pomijany i sprawdzane są kolejne warunki i jeśli jeden z nich jest spełniony to wykonywany jest odpowiedni blok instrukcji. Gdy zostanie odnaleziona instrukcja, której warunek będzie posiadał wartość TRUE, to pozostałe instrukcje zostaną pominięte. Jeżeli żaden z warunków nie jest spełniony to wykonywany jest blok instrukcji w warunku else ( o ile ten istnieje).
Jeżeli zdecydujemy się na formę uproszczoną to zostanie sprawdzony warunek. Jeśli jest spełniony (wartość TRUE) to zostanie wykonany blok instrukcji. W przeciwnym razie (warunek posiada wartość FALSE) program przechodzi do kolejnych instrukcji.
Spójrzmy jak to działa w praktyce:
| if ($i>0) { print (" $i jest większa od 0"); } elseif ($i<0) { print ("$i jest większa od 0"); } else { print ("$i jest równe 0"); } |
W powyższym przykładzie mamy pewna zmienną $i. Najpierw program sprawdza pierwszy warunek, w naszym przypadku, czy $i jest większa od 0. Jeśli tak, to za pomocą funkcji print zostanie wyświetlony napis informujący nas o tym fakcie. Jeśli warunek $i>0 przyjmie wartość FALSE, czyli $i nie jest większy od 0, to program przejdzie do wykonywania kolejnych instrukcji elseif. W naszym przykładzie sprawdzi, czy zmienna $i jest mniejsza od 0. Gdy będzie to prawdą zostanie wyświetlony odpowiedni napis (patrz funkcja print). Gdyby się okazało, że warunek i tym razem nie został spełniony, to pozostała już tylko jedna możliwość (zmienna $i jest równa 0). Aby w tym wypadku wyświetlić odpowiedni komunikat użyliśmy klauzuli else. W ten sposób mamy pewność, że przynajmniej jeden warunek będzie spełniony.
klauzula elseif oraz else
Klauzuli elseif oraz else stosujemy w celu sprawdzenia wszystkich możliwych sytuacji. Zaczynamy od zapisania pierwszego warunku w instrukcji if, następnie sprawdzamy wszystkie pozostałe warunki umieszczając każdy z nich w klauzuli elseif. Na końcu umieszczamy klauzulę else i w ten sposób jesteśmy przygotowani na wszystkie możliwe sytuacje.
Sprawdźmy jak to działa w skrypcie, który będzie wyświetlał nazwę dnia tygodnia w języku polskim. Posłużymy się tu oprócz instrukcji if funkcją date( ). W naszym przypadku funkcja ta będzie zwracała bieżący dzień tygodnia (w języku angielskim).
| <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" Content="tekst/html"; charset=iso-8859-2"> <TITLE>Dzień tygodnia<TITLE> </HEAD> <BODY> <? $dzien=date("l"); //Zmiennej $dzien przypisaliśmy za pomocą funkcji date aktualny dzień tygodnia if ($dzien=="Monday") { print ("Dzisiaj jest poniedziałek"); } elseif ($dzien=="Tuesday") { print ("Dzisiaj jest wtorek"); } elseif ($dzien=="Wednesday") { print ("Dzisiaj jest środa"); } elseif ($dzien=="Thursday") { print ("Dzisiaj jest czwartek"); } elseif ($dzien=="Friday") { print ("Dzisiaj jest piątek"); } elseif ($dzien=="Saturday") { print ("Dzisiaj jest sobota"); } else { print ("Dzisiaj jest niedziela"); } ?> </BODY> </HTML> |
W naszym skrypcie zmienna $dzien przechowuje nazwę aktualnego dnia tygodnia (która przypisaliśmy za pomocą funkcji date("l") ). Instrukcja if sprawdza po kolei wszystkie możliwe warunki. Jeśli, któryś z nich będzie miał wartość TRUE, za pomocą funkcji print wyświetli się odpowiedni komunikat "Dzisiaj jest .....".
Warto w tym miejscu jeszcze raz zwrócić uwagę na operator == i jego różnicę pomiędzy operatorem przypisania =. Gdybysly zastosowali operator przypisania = , czyli np.: $dzien="Saturday" oznaczałoby to, że zmiennej $dzien przypisujemy wartość "Saturday", a nie sprawdzamy tylko czy ta zmienna taką wartość posiada. Operator równości == sprawdza czy zmienna $dzien posiada daną wartość ( tu "Saturday"). Jeśli tak, to warunek zwraca wartość TRUE, jeśli nie to FALSE. O róznicy pomiędzy tymi dwoma operatorami wspominałem w rozdziale Operatory.
Operator trójargumentowy
PHP udostępnia także skróconą formę instrukcji if. Wykorzystuje ona znak ? - tzw. operator trójargumentowy. Ma ona postać:
| warunek ? instrukcja_true : instrukcja_false |
Na początku sprawdzany jest oczywiście warunek. Jeśli osiaga on wartośc TRUE, to zostanie spełniona instrukcja_true. W przeciwnym razie, gdy warunek ma wartość FALSE, spełniona zostanie instrukcja_false. Taka postać instrukcji odpowiada dokładnie poniższej:
| if (warunek) { instrukcja_true; } else { instrukcja_false; } |
Przykład działania skróconej formy instrukcji if przedstawiam poniżej.
Skrypt ten sprawdza, czy liczba przechowywana w zmiennej $a jest większa od liczby przechowywanej w zmiennej $b.
| <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" Content="tekst/html"; charset=iso-8859-2"> <TITLE>Czy większa?<TITLE> </HEAD> <BODY> <? $a=3; $b=8; $a>$b ? print("Liczba $a jest większa od liczby $b") : print("Liczba $a nie jest większa od liczby $b"); ?> </BODY> </HTML> |
Oczywiście w rezultacie wykonania tego skryptu na ekranie pojawi się napis:
| Liczba 3 nie jest większa od liczby 8 |
Ten sam rezultat moglibyśmy otrzymać tworząc skrypt:
| <? $a=3; $b=8; if ($a>$b) { print("Liczba $a jest większa od liczby $b"); } else { print("Liczba $a nie jest większa od liczby $b"); } ?> |
Jednak używając operatora trójargumentowego możliwy (i poprawny) jest zapis:
| <? $a=3; $b=8; print($a>$b ? "Liczba $a jest większa od liczby $b" : "Liczba $a nie jest większa od liczby $b"); ?> |
Wynik będzie identyczny. Czegoś takiego nie da się zrobić przy wykorzystaniu instrukcji if.
Operator ? jest operatorem, a nie instrukcją. Co oznacza, że wyrażenie zostanie przetworzone jako całość. Jeśli instrukcja_true będzie miała być wykonana i jeśli instrukcją tą będzie funkcja, to zostanie ona wywołana. Jeśli instrukcją tą będzie jedynie literał, to zastąpi on wyrażenie ? Ze względu na fakt, że wyrażenie warunkowe daje w naszym przypadku wartość FALSE, to cała linia kodu zostanie zamieniona do następującej postaci:
| print ("Liczba $a nie jest większa od liczby $b"); |
Pobierz przykład: if.zip

