PHP - Instrukcje warunkowe (część 2)

in polish •  7 years ago  (edited)

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ść 1Wartość 2Wynik
111
100
010
000

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ść 1Wartość 2Wynik
111
101
011
000

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

DaneWynik
10
01

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.

To do zobaczenia w następnym wpisie ;)

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Dobra inicjatywa z tym kursem php. A kiedy będzie jak przypadkowo nie zrobić dropa bazy? :D

Trzeba dropić bazę raz w tygodniu, to dobry sprawdzian :D Albo zbuduj bazę tak, by nie dało się dropić

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.

  ·  7 years ago (edited)

Oczywiście, ale to przykład :P Wiadomo, że 4 zostanie wybite mimo podzielności przez 2 [bez reszty] ;)