Я столкнулся со странной проблемой с операторами сравнения.
На моем локальном хосте этот код работает нормально:
$variable = 2;
if($variable == 2){
echo 'hi';
}
if($variable == '2b'){
echo 'bye';
}
//returns 'hi'
Но на моем сервере он возвращает «пока», если я не использую оператор строгого (===).
Есть ли способ изменить это, чтобы мой сервер также возвращал «привет»?
Это потому что php попробуй разыграть (int)
к вашей строке, потому что вы сравниваете int
с string
так что ваш блок if будет
if($variable == (int) '2b'){
Так что, когда приведу к нему, так (int) '2b'
будет только 2
,
Если вы используете ===
это работает причина того, что это также проверить, если это того же типа.
У меня была похожая ситуация в прошлом. Это глупо, но убедитесь, что вы используете одну и ту же версию PHP на обоих серверах.
В любом случае, ваш рабочий сервер работает как надо, а ваш локальный сервер — нет. Тестовое задание:
echo 2 == '2b' ? 'true' : 'false'; // true
echo 2 == 'b2' ? 'true' : 'false'; // false
Строка будет «приведена» к числу, если оно начинается с числа.