Сервер требует строгого сравнения PHP, но не на localhost

Я столкнулся со странной проблемой с операторами сравнения.

На моем локальном хосте этот код работает нормально:

$variable = 2;
if($variable == 2){
  echo 'hi';
}
if($variable == '2b'){
  echo 'bye';
}
//returns 'hi'

Но на моем сервере он возвращает "пока", если я не использую оператор строгого (===).

Есть ли способ изменить это так, что мой сервер также возвращает "привет"?

2 ответа

У меня была похожая ситуация в прошлом. Это глупо, но убедитесь, что вы используете одну и ту же версию PHP на обоих серверах.

В любом случае, ваш рабочий сервер работает как надо, а ваш локальный сервер - нет. Тестовое задание:

echo 2 == '2b' ? 'true' : 'false'; // true
echo 2 == 'b2' ? 'true' : 'false'; // false

Строка будет "приведена" к числу, если оно начинается с числа.

Это потому что php попробуй разыграть (int) к вашей строке, потому что вы сравниваете int с string так что ваш блок if будет

if($variable == (int) '2b'){

Так что, когда приведу к нему, так (int) '2b' будет только 2, Если вы используете === это работает причина того, что это также проверить, если это того же типа.

Другие вопросы по тегам