Dec 19, 2013 02:58
Доброе время суток, уважаемые!
Я чего-то не понимаю, нуждаюсь в вашей помощи:
Как так получается??
var_dump($fileid, (int) $fileid, $fileid == (int) $fileid);
string(11) "VXa9tXcMhXQ" int(0) bool(true).
пояснения:
$fileid = "VXa9tXcMhXQ"
(int) $fileid = 0. ок.
("VXa9tXcMhXQ" == 0) = true. Как??
Leave a comment
Comments 1
PS. Это в том смысле, что если указать явное преобразование типа, то содержимое строки "VXa9tXcMhXQ" явно не int, и что-то типа С-шной atoi() (если она в этом случае применяется -- а скорее всего она, надо в доке почитать) на такую строку вернёт (int)0.
Соответственно, если ты указал в операции сравнения справа от оператора явное преобразование типа, то слева наложится то же преобразование типа (иначе конфликт типов и эцих с гвоздями), и вместо "$fileid == (int) $fileid" ты в реале получишь "(int) $fileid == (int) $fileid", с очевидным true в результате, вне зависимости от содержимого $fileid.
Возможно, такое поведение регулируется настройками, это я не помню ;)
Reply
Leave a comment