服务器需要PHP严格比较,但不需要在localhost上

时间:2015-08-18 03:58:20

标签: php comparison-operators

我遇到了比较运营商的一个奇怪问题。

在我的localhost上,这段代码运行良好:

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

但是在我的服务器上,除非我使用strict(===)运算符,否则返回' bye'

有没有办法改变这一点,所以我的服务器也会返回' hi'?

2 个答案:

答案 0 :(得分:0)

这是因为php尝试将(int)投射到您的字符串,因为您将intstring进行比较,因此您的if块将

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

因此,当投射到它时,(int) '2b'只会2。 如果你使用===它的工作原因,那也要检查它是否是同一类型。

答案 1 :(得分:0)

我过去也有过类似的情况。这很愚蠢,但请确保您在两台服务器上运行相同的PHP版本。

无论哪种方式,您的生产服务器都可以正常工作,但您的本地服务器并不适用。测试:

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

字符串将被输入'如果以数字开头,则为数字。