提问人:QuentinJ 提问时间:8/9/2015 最后编辑:Mark BakerQuentinJ 更新时间:8/9/2015 访问量:102
使用 == 和 === 测试相等性
Testing for equality using == and ===
问:
使用 PHP 有两种方法可以测试是否相等。在下面的情况下,哪种方法是正确的?
settype($var,"integer");
$var = 1;
if ($var == 1)
then return(true);
else
return(false);
if ($var === 1)
then return(true);
else
return(false);
他们都在比较相等性为 1。但是,第二个语句测试它们是否相同。1 是常量,$var 是设置为值 1 的整数变量。当然 ($var == 1) 更正确吗?请帮助我理解,因为 ($var === 1) 是将变量与常量进行比较。
答:
1赞
Imran
8/9/2015
#1
== 比较变量的值是否相等,必要时进行类型转换。=== 检查两个变量是否属于同一类型且具有相同的值。例如,是真的,但1 == "1"
1 === "1"
false
在您的示例中,$var 是整数类型变量,1 是整数类型常量。实际上没有类型差异。常量在任何语言中都不是类型,它只是一个常量(不可更改)的值。常量可以是整数、双精度、字符串等类型。
有关差异的完整说明,请参见 PHP 手册链接:http://au.php.net/manual/en/language.operators.comparison.php
评论
0赞
QuentinJ
8/9/2015
我理解 == 和 === 的细微差别,但是正如您所说,=== 测试它们是否具有相同的值以及它们是否属于同一类型。在我的示例中,$var 是整数类型,1 是常量。因此,类型不同。这就是我试图理解的。
1赞
Mark Baker
8/9/2015
是的,是一个常数......它也是一个整数......常量值 将是一个字符串;常量 是整数数组。常量具有数据类型,就像变量一样1
"1"
[1]
0赞
QuentinJ
8/9/2015
谢谢,所以 === 比较了值和数据类型。
0赞
Imran
8/9/2015
是的,正如你所说。
评论
===