Natrafiłeś na bardzo ciekawą rzecz w PHP, która jest ciężka do zlokalizowania w przypadku np. testów i nie jest logiczna.
Dla PHP jakikolwiek string porównany (==) do zera (integer) zwróci nam
trueWyjaśnienie znajdziesz tutaj:
http://www.php.net/manual/en/language.type...ring.conversionW skrócie, dzieję się to dlatego, że PHP sobie rzutuje wtedy stringa na (int) co da mu w wyniku zero.
Ciekawa sytuacja też zachodzi
niekiedy przy porównywaniu hashy md5Czasami hash przypomina wyglądem floata i jest rzutowany przez PHP co może prowadzić do spełnienia takiego warunku:
(Katastrofalne w skutkach, ale niestety prawdziwe, należy używać operatora identyczności (===))
($sHash == $sDifferentHash)
Do poczytania na temat hashy: http://phpsadness.com/sad/47Kilka przykładów z zerem:
var_dump((string
)0 == 'witam'); // false