0 текст



Php приведение к числу

Автор Makas задал вопрос в разделе Другие языки и технологии

почему в PHP выражение (0 == 'текст') дает истину? и получил лучший ответ

Ответ от Frisian[гуру]
в том что стоит взять и почитать учебник по PHP!
== оператор сравнения чисел!
=== оператор сравнения строк! (точнее он сравнивает совпадение типов и значений.. . )
если в условии использовать == то обе переменные будут преобразовываться в число! и если в тексте нет числа то текст преобразовывается в ноль!
вот вы и сравниваете:
if (0 == 'текст') и тут 'текст' преобразовывается в ноль! вот и выходит TRUE!

Ответ от Pure function[гуру]
Ну что вы ждали от `языка' в котором можно сравнивать строку с числом, лол? Берём нестрогую типизацию, один оператор сравнения для строк и чисел (а не отдельный оператор сравнения для строк, как в перле например) , вследствии этого автоматическое приведение типов в сравнении и получаем, что при $a==$b и $b==$c не всегда будет $a==$c, лол. Enjoy your недоязык.
Чуть не забыл тут таки можно понять как это работает.

Ответ от Андрей Анкудинов[гуру]
"== оператор сравнения чисел! " - где это Вы взяли?
По этой логике 'текст1' == 'текст2' тоже true, т. к. при приведении к числу оба будут равны нулю. Но это же не так. Думаю, Ваш ответ неверен.

Ответ от Namolem[гуру]
В пхп делал только один курсовик, так что тут только мои догадки.
Я думаю что из-за отсутствия строгой типизации ПХП пытается преобразовать второй аргумент к типу первого. Но как преобразовать текст "текст" в строку не выдавая ошибки? только если возвратить ноль.
Для проверки попробуйте условие
if (12 == '12')

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: почему в PHP выражение (0 == 'текст') дает истину?
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*