Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dziwna konstrukcja warunku if (coś mi nie pasuje)
busterek
post 23.10.2013, 09:02:21
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witajcie.
Napisałem sobie skrypt, którzy z katalogu wczytuje maile i wyłuskuje z nich adresy nadawcy. Ponieważ są również maile od allegro i payu, to w tych mailach szuka pola Return-Path.
Wyciągnąłem adres z pola From, i sprawdzam jego wartość taką konstrukcją:

  1. if (strpos($adres, '@allegro.pl') === false or strpos($adres, '@payu.pl') === false)


Czyli przekładając na język ludzki: jeśli w adresie nie występuje ciąg '@allegro.pl' lub '@payu.pl' to ...

Jednakże nie działa to poprawnie. Zadziałało natomiast:

  1. if (strpos($adres, '@allegro.pl') === false and strpos($adres, '@payu.pl') === false)


Przecież to nielogiczne. Czy ja czegoś nie rozumiem? Może ktoś mi wyjaśnie o co chodzi? Dlaczego z punktu widzenia logiki pierwsza konstrukcja warunku if nie działa poprawnie?

Ten post edytował busterek 23.10.2013, 09:06:32
Go to the top of the page
+Quote Post
freemp3
post 23.10.2013, 09:12:33
Post #2





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

Ostrzeżenie: (0%)
-----


Oczywiście, że logiczne. W końcu jeśli będziesz miał adres z @allegro.pl to sprawdzanie @payu.pl zwróci false - warunek spełniony. W odwrotnej sytuacji będzie podobnie więc warunek działa dobrze, jednak Twoje założenie jest błędne. Jeśli chcesz użyć "OR" to powinieneś sprawdzać czy strpos zwróci true.

Założenie powinno być takie: jeśli adres jest różny od @allegro.pl oraz od @payu.pl. Nie można użyć lub ponieważ jeśli będzie równy pierwszemu to zawsze będzie różny od drugiego i odwrotnie.

Ten post edytował freemp3 23.10.2013, 09:15:21


--------------------
Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.

https://www.aroch.pl
https://themeforest.net/user/aroch
https://www.astroblog.aroch.pl
https://www.4geeks.pl
Go to the top of the page
+Quote Post
Wazniak96
post 23.10.2013, 09:12:40
Post #3





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

Ostrzeżenie: (0%)
-----


Matematyka... Jednoznacznie twój zapis można zapisać jako !strpos, a przy negacji zawsze używamy koniunkcji. wink.gif
Go to the top of the page
+Quote Post
busterek
post 23.10.2013, 09:14:01
Post #4





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


No tak. Faktycznie. macie rację. Jakoś zapędziłem się w tych dumaniach. Zgadzm się. Faktycznie jest dobrze. :-)
Go to the top of the page
+Quote Post
no_face
post 23.10.2013, 09:14:45
Post #5





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

Ostrzeżenie: (0%)
-----


Uwierz, ze jest logiczne. Przy negacji uzywamy and'a smile.gif

EDIT

Cytat
W końcu jeśli będziesz miał adres z @allegro.pl to sprawdzanie @payu.pl zwróci false


Praktycznie rzecz ujmujac w tym przypadku @payu.pl nie zwroci false. Przy OR jezeli pierwszy warunek zwroci TRUE caly if jest TRUE i nie sa sprawdzane kolejne warunki smile.gif

Ten post edytował no_face 23.10.2013, 09:19:12
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.06.2025 - 13:27