Почему переменные равны , хотя это не так, в php?

Рейтинг: 1Ответов: 1Опубликовано: 15.02.2023

Здравствуйте уважаемые знатоки. Почему выполнив этот код мы получим "равны"? Это же абсурд.

echo ('9 9 1' == 9) ? 'равны' : 'не равны'; // равны

Как '9 9 1' может быть равен девятке или наоборот? Только пожалуйста не отправляйте меня читать документацию о том как сравниваются типы в php. Она все равно не отвечает на вопрос как такое возможно.

P.S. php v 7.2

Ответы

▲ 0Принят

Это не абсурд, а PHP

В данном случае строка приводится к числу. А так как числа 9 9 1 не существует, то берется подстрока до первого пробела и она приводится к числу. В данном случае это будет 9

Проверить это можно просто

echo(intval("9 9 1"));

Выдаст 9

а

echo(intval("99 1"));

выдаст 99

Т.е. в вашем случае идет сравнение 9 и 9 - а они равны

Хотите избежать таких ошибок используйте сравнение с учетом типов. Т.е. ===

echo ('9 9 1' === 9) ? 'равны' : 'не равны'; // не равны