我遇到了比较运营商的一个奇怪问题。
在我的localhost上,这段代码运行良好:
$variable = 2;
if($variable == 2){
echo 'hi';
}
if($variable == '2b'){
echo 'bye';
}
//returns 'hi'
但是在我的服务器上,除非我使用strict(===)运算符,否则返回' bye'
有没有办法改变这一点,所以我的服务器也会返回' hi'?
答案 0 :(得分:0)
这是因为php尝试将(int)
投射到您的字符串,因为您将int
与string
进行比较,因此您的if块将
if($variable == (int) '2b'){
因此,当投射到它时,(int) '2b'
只会2
。
如果你使用===
它的工作原因,那也要检查它是否是同一类型。
答案 1 :(得分:0)
我过去也有过类似的情况。这很愚蠢,但请确保您在两台服务器上运行相同的PHP版本。
无论哪种方式,您的生产服务器都可以正常工作,但您的本地服务器并不适用。测试:
echo 2 == '2b' ? 'true' : 'false'; // true
echo 2 == 'b2' ? 'true' : 'false'; // false
字符串将被输入'如果以数字开头,则为数字。