Już w rozdziale o stałych wspomnieliśmy, że istnieje coś takiego, jak wartość prawda/fałsz. W PHP każda zmienna, stała, wynik każdej funkcji posiada wartość TRUE lub FALSE.
Jeżeli zmienna (lub stała, wynik funkcji itd.) jest ciągiem znaków, jest równa TRUE - chyba, że jest równa pustemu ciągowi znaków - wówczas jest równa FALSE.
Jeżeli jest liczbą lub liczbą zmiennoprzecionkową, jest równa FALSE, jeżeli jest równa 0 i TRUE w każdym pozostałym przypadku.
W PHP mamy również coś takiego jak wyrażenia. Wyrażenie $zmienna1 < $zmienna2 sprawdza, czy zmienna1 jest mniejsza od zmiennej2 i zwraca TRUE, jeśli tak.
$zmienna1 < $zmienna2;
// zwróci TRUE, jeśli zmienna1 jest większa od zmiennej2
$zmienna1 > $zmienna2;
// zwróci TRUE, jeśli zmienna1 jest mniejsza lub równa zmiennej2
$zmienna1 <= $zmienna2;
// zwróci TRUE, jeśli zmienna1 jest większa lub równa zmiennej2
$zmienna1 >= $zmienna2;
// zwróci TRUE, jeśli zmienna1 jest równa zmiennej1
$zmienna1 == $zmienna2;
Uwaga, szczególnie w ostatnim przypadku proszę uważać. Jeżeli zapomnimy o drugim znaku równości, a pierwsza porównywana wartość będzie zmienną - wówczas zamiast porównania wykonamy przypisanie drugiej wartości do zmiennej a warunek zwróci nam TRUE. Można się przed tym zabezpieczyć zamieniając ze sobą porównywane wartości - pierwsza wartość niech będzie ciągiem znaków a druga zmienną. Jeżeli zapomnimy o drugim znaku równości - PHP zwróci błąd składniowy - ponieważ do ciągu znaków nie można niczego przypisać:
{
echo 'Odpowiedziałeś "tak"';
}
Powyżej mamy przykład najprostszej funkcji warunkowej. Sprawdzamy, czy zmienna $odpowiedz jest równa tak. Jeżeli jest równa - wyświetlamy napis.
A co jeżeli chcemy wyświetlić jakiś napis, gdy zmienna $odpowiedz nie jest równa "tak"?
{
echo 'Odpowiedziałeś "tak"';
}
else
{
echo 'Odpowiedziałeś inaczej niż "tak"';
}
Inna sytuacja:
{
echo 'Odpowiedziałeś "tak"';
}
elseif ('nie' == $odpowiedz)
{
echo 'Odpowiedziałeś "nie". Nie, to nie...';
}
else
{
echo 'Ani "tak", ani "nie", no to ja już nie wiem jak...';
}
PHP sprawdza pierwszy warunek - czy $odpowiedz jest równa "tak". Jeśli jest równa, wykonuje zbiór poleceń zawartych pomiędzy pierwszą parą nawiasów klamrowych i nie sprawdza już pozostałych warunków. Jeśli nie jest równa "tak", sprawdza, czy jest równa "nie". Jeśli jest równa "nie" wykonuje zbiór poleceń pomiędzy drugą parą nawiasów klamrowych. Jeżeli żaden z wcześniejszych warunków nie jest prawdziwy, zostanie wykonany zbiór poleceń z trzeciej pary nawiasów klamrowych.
Bloków elseif może być wiele - ile tylko chcemy:
{
echo 'Odpowiedziałeś "tak"';
}
elseif ('nie' == $odpowiedz)
{
echo 'Odpowiedziałeś "nie".';
}
elseif ('może' == $odpowiedz)
{
echo 'Ok, poczekam aż się zdecydujesz.';
}
else
{
echo 'Nie rozumiem :(';
}
Wiele może być także warunków do sprawdzenia. Wystarczy tylko pamiętać, że każdy z nich musi być otoczony nawiasami, a cały zestaw warunków także musi być w nawiasach. Warunki łączymy za pomocą operatorów AND (lub znaków &&) lub OR (lub znaków ||).
Wyrażenie (($zmienna1 < $zmienna2) AND ($zmienna3 < $zmienna4)) zwróci prawdę tylko, jeżeli zmienna1 jest mniejsza od zmiennej2 i jeżeli zmienna3 jest mniejsza od zmiennej4.
Wyrażenie (($zmienna1 < $zmienna2) OR ($zmienna3 < $zmienna4)) zwróci prawdę jeśli przynajmniej jeden z połączonych operatorami warunków zwróci prawdę.
