Witam, czy przytoczony przeze mnie poniżej warunek jest dopuszczalny? Działać działa :D
if( ( $reason == 'wlasny' && !empty($written_reason) ) || $reason != 'wlasny' )
Witam, czy przytoczony przeze mnie poniżej warunek jest dopuszczalny? Działać działa :D
if( ( $reason == 'wlasny' && !empty($written_reason) ) || $reason != 'wlasny' )
A czemu pytasz? Co Ci w tym zapisie nie pasuje? Zwłaszcza, że mówisz, że działa zgodnie z oczekiwaniami :P
Pytam bo nigdzie nie spotkałem się z takimi warunkami z dodatkowym nawiasem w środku.
Są tak jak by dwa główne warunki musi być spełniony jeden lub drugi, tylko że ten pierwszy składa się dwóch.
Jeśli nic złego w tym nie widzisz i działa no to super :D
Ale wiesz, ze wystarczy if (reason != wlasny || !empty(written_reason))
? ;)
p /\ q \/ ~p === ~p \/ q
EDIT: jak sie LaTeXa uzywa na coyocie?
PavlO. napisał(a):
Pytam bo nigdzie nie spotkałem się z takimi warunkami z dodatkowym nawiasem w środku.
Nawiasy pełnią tylko funkcję oddzielenia jednej części wyrażania logicznego od reszty. Są jak najbardziej dozwolone, a nawet często wskazane xD
Tylko odradzam pisanie długich warunków wewnątrz if (...) {
. Zdecydowanie czytelniej jest wrzucić warunek do jakiejś funkcji, którą w ifie się wywoła.
No ale można sobie i 20 operacji połączyć, nie ma w tym niczego złego/żadnego problemu.
W "pierwszym" nawiasie - ( $reason == 'wlasny' && !empty($written_reason) )
masz dwa warunki - jeżeli oba będą prawdziwe, to wartość całego nawiasu będzie TRUE
.
Następnie bierzemy pod uwagę wartość w/w nawiasu oraz $reason != 'wlasny'
. Mamy je połączone operatorem ||
- więc jeśli którykolwiek z nich będzie prawdziwy, to całość także zwróci TRUE
.
A taka uwaga z zakresu "ładnego pisania" - lepiej to sprawdzenie wydzielić do osobnej funkcji - wtedy byłoby coś w stylu if (goodReason($reason))
i w tej funkcji zawrzeć całą logikę. Wtedy podczas analizy kodu nie musisz rozkminiać co się kryje w tym IF
, tylko patrzysz i wiesz, że skrypt pojedzie dalej, jeśli funkcja goodReason
zwróci TRUE, czyli że podana przyczyna spełnia postawione jej kryteria.
Dziękuję wszystkim za pomocne odpowiedzi :)
Możesz zawsze skrócić ten warunek i dać taki:
if( $reason <=> 'wlasny' || !empty($written_reason))
W razie wątpliwości czy nawiasy sa potrzebne, zawsze można spojrzec tutaj: https://www.php.net/manual/en/language.operators.precedence.php. Btw jeżeli $reason
nie jest obiektem który implementuje __toString()
, to warto użyć ===
i !==
, niż ==
i !=
.