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 を使用して、正しいタイプを確認することもできます。

2 つの式が同じ値に評価される==かどうかをチェックします。文字列が に評価されると解釈されます。booltrue

最初のオペランドはbool値なので、2 番目のオペランドも として解釈され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 に答える