Сервер требует строгого сравнения 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
, Если вы используете ===
это работает причина того, что это также проверить, если это того же типа.