сравнение двух переменных возвращает ложный результат

Почему это всегда возвращает true :

 $s = '334rr'; $i = (int)$s; if ($i == $s) { echo true; } else { echo false; } 

Если я эхо $i он дает значение 334 , которое отличается от $s 334rr .

Solutions Collecting From Web of "сравнение двух переменных возвращает ложный результат"

Из руководства :

Если вы сравниваете число со строкой или сравниваете числовые строки, то каждая строка преобразуется в число, а сравнение выполняется численно.

Итак: ($i == $s) совпадает с ($i == (int)$s) для значений, которые вы указали.

Используйте === чтобы избежать манипуляции с типом.

При сравнении строки с целым числом, используя == , строка будет пытаться применить к целому числу.

Попробуй это

 $s = '334rr'; $i = intval($s); if ($i == $s) { echo true; } else { echo false; } 

Сравнение строк с int не рекомендуется. Вы должны использовать === вместо этого, который будет проверять один и тот же тип данных, а также одно и то же значение.

PHP преобразует строку $ s в целое число по сравнению с другим целым числом ($ i). Это в основном делает это (ну, я не знаю, что он делает внутренне, но это сводится к такому):

 if($i == (int) $s) 

Что делает утверждение истинным