Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> $i = 0; warunek if - blad w PHP?
treewood
post
Post #1





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 18.01.2003

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


  1. <?php
  2.  
  3. $i = 0;
  4.  
  5. switch ( $i )
  6. {
  7. case 'a':
  8. echo '<h2><center>a</center></h2>';
  9. break;
  10. }
  11.  
  12. if( $i == 'cos' ){
  13. echo '<h2><center>a</center></h2>';
  14. }
  15.  
  16. ?>


if i switch wykonuja sie i wyswietla mi sie dwa razy "a". nie powinno ... wiem, ze jest zapytanie === i wtedy jest weryfikacja typow jednak dziwi mnie to ... wiecie moze dlaczego tak sie dzieje?

testowalem na php 4.3.3 i 4.3.9
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kszychu
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


No i co w tym dziwnego? Działa tak, jak powinno działać. Jeżlei na początku przypiszesz do $i liczbę całkowitą, to wszystkie późniejsze porównania automatycznie konwertują drugą porównywaną wartość na liczbę całkowitą. A że z konwersji stringa na liczbę całkowitą wyjdzie 0, więc wynikiem porównania jest true.
Jak słusznie zaueażłeś treewood, operator == porównuje tylko wartości, więc gdy nie zgadzają się typy, następuje automatyczna konwersja, === natomiast porównuje i typy i wartości.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 07:45