Ok, mieliśmy w poprzednim tekście o instrukcjach warunkowych, w pewien sposób "prostych". W pewien sposób, gdyż na raz sprawdzaliśmy tylko jeden warunek. Ale przecież możemy chcieć sprawdzić bardziej rozwinięte warunki, np. Czy podana wartość jest liczbą i czy jest liczbą parzystą? Czyli podwójne sprawdzenie. Skoro jest podwójne sprawdzenie to jakoś to trzeba łączyć i dzisiaj się tym zajmiemy.
Najpopularniejsze operatory operacji bitowych mamy w zasadzie 2 - AND i OR (być może NOT tutaj można dorzucić). Oczywiście w razie problemów możemy sprawdzić inne, ale te dwa to najważniejsze z najważniejszych.
AND
AND to logiczne "i". Działa wtedy, gdy oba warunki są poprawne. Dla przykładu: Poszedłem do sklepu i zrobiłem pranie. Jeśli te dwie czynności są zrealizowane, to zdanie jest poprawne.
Przykładowy kod:
$a=2;
if( ($a==2) AND ($a%2==0) ) {
echo 'Prawda';
} else {
echo 'Fałsz';
}
Działa tak. zmienna $a jest równa 2. Jeśli $a jest równe 2 i reszta z dzielenia przez 2 jest równa 0 to zgłoś prawdę. Jeśli nie to fałsz. Dla dwójki jest to prawda, ale jak damy 4 to pierwszy warunek (czy 4 jest równe 2) jest błędny, więc drugi warunek nie ma znaczenia (jak to w koniunkcji).
AND można zapisywać po angielsku lub symbolem &&
Wartość 1 | Wartość 2 | Wynik |
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
OR
OR to "lub". Zwraca prawdę gdy przynajmniej jeden współczynnik jest prawidłowy. Troszkę inaczej niż w potocznym życiu, gdzie lub to często wybór między jednym a drugim, w tym przypadku jeśli dwa wybory są prawidłowe to również zwraca prawdę.
Fervi zrobił zakupy lub upiekł chleb.
Czyli oprócz jednego i drugiego, jak zrobi dwa to również jest poprawne z logiką (alternatywą).
$a=4;
if( ($a==2) OR ($a%2==0) ) {
echo 'Prawda';
} else {
echo 'Fałsz';
}
Bardzo podobny przykład do poprzedniego. A jest równe 4. Zapytanie brzmi: Jeśli $a jest równe 2 (nie jest - 0) lub reszta z dzielenia $a jest równa 0 (prawda) to ... prawda.
Fałszem byłaby każda liczba nieparzysta.
Wartość 1 | Wartość 2 | Wynik |
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
NOT
NOT to zaprzeczenie. Nie jest to takie działanie jak wyżej, po prostu zamienia prawdę na fałsz, a fałsz na prawdę.
Ktoś może się zapytać - po co takie coś? Jako pewnego rodzaju przyspieszenie prac można tego użyć lub parę innych celów, które czasem się przydają :D
Powiedzmy, że musimy dostać od użytkownika imię, które zapiszemy w zmiennej imię. Jak sprawdzić (dość nieoptymalnie?) czy imię zostało wypełnione?
if(empty($imie)) {
// Imię jest puste
} else {
// Imię jest wpisane
}
O taki przykład prosty - Ale powiedzmy, że chcemy "tak o" dostać imię i jego posiadanie nie jest nam potrzebne. Możemy zapytać czy imię NIE jest puste, bez żadnego else.
if(!empty($imie)) {
// Imię jest wpisane
}
W zasadzie zdanie mogłoby brzmieć - Fervi nie wyrzucił śmieci. Jeśli tego nie zrobił to prawda :D
Dane | Wynik |
1 | 0 |
0 | 1 |
Długie weryfikacje.
Ktoś może się zastanawiać - ok, mamy dwa sprawdzania. Co jak będzie ich 5? To trzeba ładnie to ubrać w nawiasy i użyć AND i OR. Na przykład sprawdzamy jedną parę i drugą parę.
Zadanie domowe
Zrobić takiego if, gdzie podana liczba w zmiennej nie jest parzysta i jest większa od 0, a mniejsza od 100.
Dobra inicjatywa z tym kursem php. A kiedy będzie jak przypadkowo nie zrobić dropa bazy? :D
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Trzeba dropić bazę raz w tygodniu, to dobry sprawdzian :D Albo zbuduj bazę tak, by nie dało się dropić
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Warunki trochę nieszczęśliwie dobrane, bo może być trudno znaleźć liczbę, która wynosi 2, ale reszta z jej dzielenia przez 2 jest różna od zera.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Oczywiście, ale to przykład :P Wiadomo, że 4 zostanie wybite mimo podzielności przez 2 [bez reszty] ;)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit