if / else没有按预期工作

时间:2013-09-02 11:24:09

标签: php

我有以下代码:

$posthandlerResult = reserveerForm_posthandler(decideWhichSectionlist());

if($posthandlerResult=='go2paypage'){
    echo 1;
}elseif($posthandlerResult===true){
   echo 2;
}else{
   echo 3;
}

这是$ posthandlerResult的值(我在做if / else之前做了这个):

var_dump( $posthandlerResult); // -> bool(true)

我期待什么?数字为2的回声。然而,我得到数字1.我现在看这个太久了,为什么不这样做?

2 个答案:

答案 0 :(得分:2)

您也可以使用=== - 运算符来检查正确的类型。

==检查,如果两个表达式评估为相同的值。解释为bool,您的字符串评估为true

您的第一个操作数是bool - 值,因此第二个操作数也被解释为bool。非空且非零字符串的计算结果为布尔true

您可以在此处查找stringbool比较的运算符行为:http://www.php.net/manual/en/language.operators.comparison.php

答案 1 :(得分:1)

当使用'if(true =='someString')'时,任何非空或字符串0的字符串将等于true(因此if语句将为true),请参见此处:

http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting