Autor Zpráva
juneau
Profil
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
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
Pravda, pravda.
peta
Profil
juneau
ono je porovnavani a porovnavani
==0 upravi si typy sam
===0 typy se musi shodovat a pak porovnava hodnoty
nightfish
Profil
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0