0

我有以下代码:

$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。我已经看这个太久了,为什么这不起作用?

4

2 回答 2

2

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

==检查两个表达式的计算结果是否相同。解释为bool您的字符串计算结果为true.

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

您可以在此处查找操作员行为stringbool比较:http ://www.php.net/manual/en/language.operators.comparison.php

于 2013-09-02T11:25:46.837 回答
1

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

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

于 2013-09-02T11:36:09.790 回答