![]() |
![]() ![]() |
![]() |
![]() ![]()
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ł.
Czy ktoś potrafi to wyjaśnić?? |
|
|
![]()
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."
|
|
|
![]()
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)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 2 Dołączył: 17.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
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ł.
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 ![]() Ten post edytował Wodzu 31.05.2008, 14:34:23 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 6 Dołączył: 31.12.2007 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Dzieki za wyjasnienie
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 17:08 |