Почему переменные равны , хотя это не так, в php?
Здравствуйте уважаемые знатоки. Почему выполнив этот код мы получим "равны"? Это же абсурд.
echo ('9 9 1' == 9) ? 'равны' : 'не равны'; // равны
Как '9 9 1' может быть равен девятке или наоборот? Только пожалуйста не отправляйте меня читать документацию о том как сравниваются типы в php. Она все равно не отвечает на вопрос как такое возможно.
P.S. php v 7.2
Ответы (1 шт):
Это не абсурд, а PHP
В данном случае строка приводится к числу. А так как числа 9 9 1 не существует, то берется подстрока до первого пробела и она приводится к числу. В данном случае это будет 9
Проверить это можно просто
echo(intval("9 9 1"));
Выдаст 9
а
echo(intval("99 1"));
выдаст 99
Т.е. в вашем случае идет сравнение 9 и 9 - а они равны
Хотите избежать таких ошибок используйте сравнение с учетом типов. Т.е. ===
echo ('9 9 1' === 9) ? 'равны' : 'не равны'; // не равны