Post
#1
|
|
|
Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź |
Witam,
Naprawdę zgłupiałem. Albo o czymś nie wiem. Mam w programie taki test, gdzie zmienna może przyjąć trzy wartości: mniejszą od zera, większą od zera bądź zero. Żeby nie jechać trzy razy if / else if / else if napisałem swich(), który w zależności od wartości zmiennej podejmuje odpowiednie działania. W case() sprawdzam po kolei wystąpienie wszystkich warunków: case ($a < 0) ... bla bla rób to; break; case ($a > 0) ... bla bla rób tamto; break; case ($a == 0) ... bla bla siamto; break; Moja radośc trwała do momentu, gdy zmienna $a przyjęła wartość 0, a wkonał się kod zawarty w teście case($a < 0). Myślę sobie, qrde, co jest, od kiedy 0 jest mniejsze od 0 ? No i zaczęła się walka. Ustawiałem warunki w różnej kolejności, eliminowałem warunek case ($a == 0), wtedy i tak wykonywał się kod zawarty w case ($a < 0), rzutowałem $a na wszelkie możliwe intval-e , integery itp. , porównywałem ją w taki sposób: case ($a === 0). Nic. Uprzedzając wszelkie pytania: nie ma błędów w składni, wszędzie są brejki itd. Z problemem zetknąłem się w większej aplikacji, ale dla porównania napisałem sobie ten test:
Teraz, gdy uruchamiam go sobie po kolei dla każdej wartości $a, mam następujące wyniki: Kod $a = -1 w switch(): a < 0 w if() / else if() / else if() : a < 0 Kod $a = 1 w switch(): a > 0 w if() / else if() / else if() : a > 0 A teraz uwaga: dla $a = 0: Kod $a = 0 w switch(): a < 0 w if() / else if() / else if() : a = 0 WTF ? |
|
|
|
blooregard porównanie zmiennej do 0 w if() / else if() oraz switch() - różnice, gdy zmienna = 0 3.02.2009, 12:33:41
wookieb Kodswitch ($a) {
case 0: echo ... 3.02.2009, 12:37:56
blooregard Tak, tak jest ok.
Ale wytłumacz mi proszę, czemu w... 3.02.2009, 12:44:26
wookieb Switch sprawdza to co podales mu w argumencie
Wie... 3.02.2009, 13:05:49
blooregard No teraz wszystko jasne.
Dzięki. 3.02.2009, 13:14:47
ucho [PHP] pobierz, plaintext <?phpswitch (true... 3.02.2009, 13:24:34 ![]() ![]() |
|
Aktualny czas: 20.12.2025 - 13:04 |