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

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

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

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

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

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

0

Решение

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

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

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

0

Другие решения

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

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

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

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

0