Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Switch - nieoczekiwany wynik
Forum PHP.pl > Forum > Przedszkole
marekdominikowski
Mam taki kod:
  1. <?php
  2. $przychod = 200;
  3. $koszty = 200;
  4. $zysk = $przychod - $koszty;
  5.  
  6. switch($zysk) {
  7. case ($zysk == 0):
  8. $wynik = 'Wyszliśmy na 0';
  9. echo $wynik;
  10. break;
  11. case ($zysk > 0):
  12. $wynik = 'Zarobiliśmy';
  13. echo $wynik;
  14. break;
  15. case ($zysk < 0):
  16. $wynik = 'Ponieśliśmy straty';
  17. echo $wynik;
  18. break;
  19. }
  20. ?>

Przy takich wartościach zmiennych $przychod i $koszty switch powinno zwrócić 'Wyszliśmy na 0'. Tymczasem zwraca 'Zarobiliśmy'. Dlaczego?
Gość
  1. case '0': echo 'Wyszliśmy na zero'; break;
marekdominikowski
No jasne smile.gif Dzięki!

edit: A czy z logicznego punktu widzenia to nie wychodzi na to samo?
Gość
co prawda nie było odpowiedzi na postawione pytanie, ale przedstawiony sposób rozwiązuje problem
werdan
Ten kod wygladał mniej wiecej tak:
  1. $a = 0;
  2. switch($a) {
  3. case true:
  4. echo 'true';
  5. break;
  6. case false:
  7. echo 'false';
  8. break;
  9. case false:
  10. echo 'false2';
  11. break;
  12. }


Zero to FALSE, wiec wpadało w drugi 'case'.

http://www.php.net/manual/en/types.comparisons.php
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.