![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 5 Dołączył: 10.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Napisałem taki sobie oto warunek
Z niewiadomych dla mnie przyczyn zamiast wyświetlić 0 wyświetla + (przecież 0 =/= +) Jeśli dam === zamiast ==, działa OK Czy może mi ktoś wyjaśnić dlaczego tak to działa? przecież 0/Null z pewnością nie powinien pasować do 1szego warunku |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 273 Pomógł: 52 Dołączył: 3.02.2013 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
Natrafiłeś na bardzo ciekawą rzecz w PHP, która jest ciężka do zlokalizowania w przypadku np. testów i nie jest logiczna.
Dla PHP jakikolwiek string porównany (==) do zera (integer) zwróci nam true Wyjaśnienie znajdziesz tutaj: http://www.php.net/manual/en/language.type...ring.conversion W skrócie, dzieję się to dlatego, że PHP sobie rzutuje wtedy stringa na (int) co da mu w wyniku zero. Ciekawa sytuacja też zachodzi niekiedy przy porównywaniu hashy md5 Czasami hash przypomina wyglądem floata i jest rzutowany przez PHP co może prowadzić do spełnienia takiego warunku: (Katastrofalne w skutkach, ale niestety prawdziwe, należy używać operatora identyczności (===))
Do poczytania na temat hashy: http://phpsadness.com/sad/47 Kilka przykładów z zerem: Ten post edytował mstraczkowski 13.02.2013, 13:15:43 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 23:46 |