这都是关于数据类型的。以BOOL(真或假)为例:
true 也等于 1 和
false 也等于 0
== 在比较时不关心数据类型:
因此,如果您有一个为 1 的变量(也可以是 true):
$var=1;
然后与==比较:
if ($var == true)
{
echo"var is true";
}
但是$var 实际上并不等于true,是吗?它的 int 值是 1,而它又等于 true。
使用===,检查数据类型以确保两个变量/对象/任何东西使用相同的类型。
如果我这样做了
if ($var === true)
{
echo "var is true";
}
该条件不成立,因为 $var !== true 它只是 == true(如果你知道我的意思的话)。
你为什么需要这个?
简单——让我们看一下 PHP 的一个函数:array_search():
array_search() 函数只是在数组中搜索一个值,并返回找到该值的元素的键。如果在数组中找不到该值,则返回 false。但是,如果您对存储在数组的第一个元素中的值执行array_search() 会怎样(数组键为0)......array_search()函数将返回 0...等于 false..
如果你这样做了:
$arr = array("name");
if (array_search("name", $arr) == false)
{
// This would return 0 (the key of the element the val was found
// in), but because we're using ==, we'll think the function
// actually returned false...when it didn't.
}
那么,你现在明白这怎么可能是个问题了吗?
大多数人在检查函数是否返回 false 时不使用== false。相反,他们使用!。但实际上,这与使用==false 完全相同,所以如果你这样做了:
$arr = array("name");
if (!array_search("name", $arr)) // This is the same as doing (array_search("name", $arr) == false)
因此,对于这样的事情,您可以改用===,以便检查数据类型。