Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Dziwny zachowanie warunku if
parzygnat
post 31.05.2008, 13:09:40
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 6
Dołączył: 31.12.2007
Skąd: Poznań

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


Pisząc prosty programik natknąłem się na dziwny problem:
W miejscu gdzie $klucz4 == 'ilosc' jeżeli $klucz4 ma wartosc 0 to warunek będzie spełniony, w pozostałych przypadkach funkcja if działa tak jakbym chciał.

  1. <?php
  2. if($_SESSION[$klucz1][$klucz2]['rodzaj'] == 'wysokosc'){
  3. $y_wew = '20';
  4. foreach($wartosc2 as $klucz3 => $wartosc3){
  5. if(is_array($wartosc3) ){
  6. foreach($wartosc3 as $klucz4 => $wartosc4){
  7. if($klucz4 == 'ilosc'){
  8. print "<div id=\"ilosc\" style=\"position:absolute; left:345px; top:{$y_wew}px; width:85px; height:20px; z-index:1\" class=\"warstwa_koszyk\">";
  9. print "$wartosc4";
  10. print "</div>";
  11. $y_wew += '20';
  12. }
  13. }
  14. }
  15. }
  16. }
  17. ?>

Czy ktoś potrafi to wyjaśnić??
Go to the top of the page
+Quote Post
Kicok
post 31.05.2008, 13:16:45
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Następuje niejawna konwersja z typu string ('ilosc') na typ int (0)

Poczytaj o różnicy między == a ===


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
parzygnat
post 31.05.2008, 14:12:18
Post #3





Grupa: Zarejestrowani
Postów: 155
Pomógł: 6
Dołączył: 31.12.2007
Skąd: Poznań

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


Dzieki za pomoc. O tym to juz czytałem ale dlaczego jak jest $klucz4 ma wartosc 1 to działa(warunek nie spełniony) jak ma wartość 'ilosc' to tez działa(warunek spełniony)
Go to the top of the page
+Quote Post
Wodzu
post 31.05.2008, 14:33:30
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 2
Dołączył: 17.09.2005

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


Cytat(parzygnat @ 31.05.2008, 12:09:40 ) *
W miejscu gdzie $klucz4 == 'ilosc' jeżeli $klucz4 ma wartosc 0 to warunek będzie spełniony, w pozostałych przypadkach funkcja if działa tak jakbym chciał.
  1. <?php
  2. if($klucz4 == 'ilosc') ...
  3. ?>

Jeżeli $klucz4 ma wartość 0 (int - liczba naturalna), wtedy PHP myśli, że porównujemy liczby. I wówczas próbuje ze słowa 'ilosc' zrobić liczbę, a że nie występują na jego początku cyferki, uznaje, że ów string niejawnie skonwertowany podczas przypisania do liczby ma wartość 0. A 0==0 daje true smile.gif

Ten post edytował Wodzu 31.05.2008, 14:34:23
Go to the top of the page
+Quote Post
parzygnat
post 31.05.2008, 15:39:24
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 6
Dołączył: 31.12.2007
Skąd: Poznań

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


Dzieki za wyjasnienie
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: 19.07.2025 - 17:08