1

一部のphpで奇妙な問題が発生しています。起こっているように見えるのは、0 が文字列「done」と等しいものとして表示されていることです。何が起こっているかは次のとおりです。

if(!isset($pointer)){
    $pointer = 0;   
}
error_log($pointer); //in this instance, I haven't set a pointer, returns 0
if($pointer == "done"){
    die();
}

何らかの理由で、2 番目の if ステートメントがスクリプトをトリガーして強制終了しています。$pointer が 0 に等しい場合、明らかに「完了」にも等しい理由がわかりません。これは私が見落としている超簡単なものですか?

私は状況を回避し、2番目の if ステートメントで === を使用すると、望ましい結果が得られます。そもそもなぜそれが機能しなかったのかを理解したいだけです。お時間をいただきありがとうございます。

4

1 に答える 1

6

これは型比較の問題です。あなたが言うように、次を使用して:

if($pointer === "done"){

値と型の両方に対してチェックを強制します。

何が起こっているかというと、「done」が比較のために数値に変換されているということです。そこには数値がないため、null として出力されます。null は比較で 0 と評価されます。

于 2012-09-19T18:45:23.970 に答える