所以我以前的代码需要一个变量来运行2个函数,然后返回这个值。
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语句进行显示。 现在这是奇怪的地方。如果我将它保留在2个函数中if语句有效,但是如果我通过第3个检查函数运行它,我需要格式化我的if是这样的,以便正确检查返回:
if($variable === -1) // display message
if($variable === -2) // display message
if($variable === true) // display message
注意我必须添加第3个'='符号。我只是想不通为什么会发生这种情况。这是正常的一些我不知道的PHP法则还是这个错误?
答案 0 :(得分:1)
如果要比较的两个对象相同(相同类型和值),则三等号(===
)仅返回true
,而不仅仅是等于。 / p>
例如:
$a = 1;
$b = "1";
echo $a == $b; // True
echo $a === $b; // False
答案 1 :(得分:1)
这不是奇怪的行为,对PHP来说非常自然。
表达式:
if ($variable == true) {
}
表示PHP会将左操作数转换为较少的pretensive类型(在本例中为BOOLEAN)并在此之后进行比较。如果$ variable value不为0或FALSE或NULL或''
,这显然会导致TRUE在第二种情况下,即===有严格的检查值,并比较两个操作数的类型。
答案 2 :(得分:0)
您的代码未显示您如何调用函数和存储返回,可能存在问题。另外,我想你只是为了说明而调用了函数1和2,因为你知道你不能用函数开始函数的名称。
===
'完全等于'(值和类型)。通常用于逻辑测试,因为有时您需要将0与false和1区分为真。