我有以下代码:
$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.我现在看这个太久了,为什么不这样做?
答案 0 :(得分:2)
您也可以使用===
- 运算符来检查正确的类型。
==
检查,如果两个表达式评估为相同的值。解释为bool
,您的字符串评估为true
。
您的第一个操作数是bool
- 值,因此第二个操作数也被解释为bool
。非空且非零字符串的计算结果为布尔true
。
您可以在此处查找string
和bool
比较的运算符行为: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