Какой будет ответ var_dump(0 == "wow"); ??

php v7
var_dump(0 == "wow"); //true

php v8
var_dump(0 == "wow"); //false

В 7 версии логика такая,- строка "wow" не может быть преобразована в число, значит сравниваем 0 == 0;
Но как в 8 версии идет сравнение ?
  • Вопрос задан
  • 430 просмотров
Решения вопроса 1
@Vitsliputsli
Нет, не так.
В 7 версии: т.к. сравниваем число и строку, то преобразовываем строку в число (int)"wow" = 0, и сравниваем результат: 0 и 0 - true.
В 8 версии: т.к. сравниваем число и строку, то проверяем содержит ли строка число, в данном случае - нет, не содержит (что-то вроде is_numeric("wow")), а раз не содержит - false.

Отсюда вывод, не стоит использовать подобные конструкции. Всегда пользуйтесь сравнением с учетом типов, если нужно, то приводите к нужному типу вручную. Такая конструкция возможна только в самом крайнем случае.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@asdasdqwe Автор вопроса
В PHP8, напротив, сравнивает строку и число как числа только если строка представляет собой число. Иначе, число будет конвертировано в строку, и будет производится строковое сравнение.

То есть идет сравнение "0" == "wow" //false
Впрочем, в php 8 много нового
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы