0

有两种不同类型的变量。但是在使用 == 运算符比较两个变量时,它会返回奇怪的输出。这是错误还是其他问题?我很惊讶。这是代码,

$a=1000;
$b='1000square';
if($a==$b){
    echo "a equal b";
}else{
    echo "a not equal b";
}

它输出:a等于b。但预期:a不等于b。

谁能解释一下?

谢谢!!!

4

2 回答 2

2

$b将类型转换为数字,因此可以将其与进行比较$a,因此结果$b(数字1000)将等于$a。如果要确定两个变量是否相同,而不是相等,则应使用===而不是。不进行类型转换,并且仅在两个变量的类型相同相等时才返回。=====true

于 2013-08-26T12:15:01.097 回答
1

==PHP和===PHP之间是有区别的。请参阅文档:http ://dk1.php.net/manual/en/language.operators.comparison.php

语句中发生的事情$a==$b是 PHP 需要决定如何比较$a$b. 由于至少有一个操作数 ( $a) 是数字,因此 PHP 使用数字比较而不是字符串比较。因此$b转换为数字。在 PHP 中,字符串'1000square'被转换为数字 1000。这就是为什么您的代码显示这$a==$b是真的。

但是,$a===$b是错误===的,因为也比较类型。这可能是您正在寻找的运营商。

于 2013-08-26T12:20:56.157 回答