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.
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 !=.