非常奇怪的php函数返回的解释

时间:2011-12-05 06:39:46

标签: php function

所以我以前的代码需要一个变量来运行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法则还是这个错误?

3 个答案:

答案 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区分为真。