所以我过去的代码需要一个变量来运行两个函数,然后返回这样的值。
function 1($variable) {
check($variable);
return $variable // either a -1, -2 or true;
}
// pass the return to next function
function 2($variable) {
check($variable);
return $variable // either a -1, -2 or true;
}
在下一次检查时,它向用户返回如下消息:
if($variable == -1) // display message
if($variable == -2) // display message
if($variable == true) // display message
现在,根据工作要求,变量必须经过第三次函数检查,仍然返回-1,-2或true,然后进入最后的if语句进行显示。这就是奇怪的地方。如果我保持它在两个函数If语句工作,但是如果我运行它通过第三个检查函数我需要格式化我的If是这样的,以便正确检查返回:
if($variable === -1) // display message
if($variable === -2) // display message
if($variable === true) // display message
注意我必须添加第三个'='符号。我就是不明白为什么会这样。这是我不知道的PHP规则,还是有bug?
这不是奇怪的行为,这是非常自然的PHP。
以下表达式:
if ($variable == true) {
}
表示PHP将左操作数强制转换为不那么自命的类型(在本例中为BOOLEAN),并在此之后进行比较。如果$variable值不为0或FALSE或NULL或"
",则显然会导致TRUE在第二种情况即===中,对两个操作数的值和类型进行严格的检查。
三重等号(===
)只有在比较的两个对象相同(具有相同的类型和值)时才返回true
,而不仅仅是相等。
$a = 1;
$b = "1";
echo $a == $b; // True
echo $a === $b; // False
您的代码没有显示如何调用函数和存储返回,可能有问题。另外,我想你调用函数1和2只是为了说明,因为你知道你不能用数字开始函数的名字。
===
是"完全相等"(值和类型)。通常用于逻辑测试,因为有时需要区分0和false以及1和true。