Вопрос PHP программистам: почему «top» == 0 есть true?
Здравствуйте!
Изучая php я все больше удивляюсь некоторым конструкциям языка. Конечно для новичка это нонсенс , но для
профи это пустяки. Вопрос как уже понятно с заголовка вопроса следующий: Почему этот код работает? Я "порылся" в документации но видимо плохо искал или не умею искать. if("top" == 0)echo 111;
Almik Эх! Дайте мне гитару php.net/manual/en/language.operators.comparison.php
"If you compare a number with a string or the comparison involves numerical strings, then each string is converted to a number and the comparison performed numerically. These rules also apply to the switch statement. The type conversion does not take place when the comparison is === or !== as this involves comparing the type as well as the value. "
Вам не кажется, что сравнивать строку с числом - тоже самое, что сравнивать 10 килограмм картошки и эмоциональное удовлетворение от просмотра концерта?
Если сравнивать несравнимое - в любом языке с динамической типизацией можно получить абсолютно идиотские результаты.
Для корректного сравнения таких величин есть оператор "тождественно равно ===" - он проверяет типы (вообще - обычно стараются такое не сравнивать)
rain84: с точки зрения PHP - да.
с моей точки зрения - "10" должно быть приведено к числу и сравниваться через "===".
К слову, в Python любое сравнение числа и строки - false.
Вячеслав: ну это не сам PHP подвержен ошибкам, а программы, написанные теми, кто не знаком с его возможностями. )
Приведение типов намного упрощает жизнь на самом деле.