Autor | Zpráva | ||
---|---|---|---|
juneau Profil |
#1 · Zasláno: 9. 9. 2008, 10:12:32
Vím, že PHP na tento apekt programovacíh jazyků řeší - tedy je mu jedno, jestli porovnáváte textové řetězce nebo čísla. Ale není na tomhle něco divného?
$s = '000.jpg'; echo ($s == 0); Tento kód vyhodí TRUE. Tedy že číslo 0 se rovná řetězci '000.jpg'. Pro '001.jpg' už pracuje korektně. Řešení je zřejmé, použiju ===, ale v tomto případě bych toto chování opravdu nečekal. |
||
srigi Profil |
#2 · Zasláno: 9. 9. 2008, 10:33:27
Ale PHP reaguje spravne. Kedze je to vagne typovany jazyk, tak sa snazi string pretypovat na cislo podla obsahu toho stringu. To znamena, ze sa pokusi najst nejake ciselne hodnoty a pismena ingnoruje.
'000.jpg' >> pismena a ine znaky sa budu ignorovat, zostane nam '000' a to PHP prelozi ako cislo nula. Ked mu predhodis '001.jpg', ziskas jednotku. |
||
juneau Profil |
#3 · Zasláno: 9. 9. 2008, 10:39:11
Pravda, pravda.
|
||
peta Profil |
#4 · Zasláno: 11. 9. 2008, 11:46:34
juneau
ono je porovnavani a porovnavani ==0 upravi si typy sam ===0 typy se musi shodovat a pak porovnava hodnoty |
||
nightfish Profil |
#5 · Zasláno: 11. 9. 2008, 12:08:51
„To znamena, ze sa pokusi najst nejake ciselne hodnoty a pismena ingnoruje.
'000.jpg' >> pismena a ine znaky sa budu ignorovat, zostane nam '000'“ spíš bych řekl, že se budou načítat číslice do prvního výskytu nečíselného znaku viz např. echo (int)"012.jpg"."<br>"; // 12 echo (int)"000.jpg"."<br>"; // 0 echo (int)".jpg001"."<br>"; // 0 echo (int)""."<br>"; // 0 |
||
srigi Profil |
#6 · Zasláno: 11. 9. 2008, 12:35:24
„spíš bych řekl, že se budou načítat číslice do prvního výskytu nečíselného znaku “
Tak nejak, v mojej knizke PHP sa pise, ze vydolovanie cisla zo stringu funguje, iba ak je cislo na zaciatku stringu. |
||
Časová prodleva: 16 let
|
0