2016-07-11 16 views
-4

これに1または2を入れると、4が返されます。これはなぜですか?これはむしろ基本的であれば、私はPythonのものに慣れています。OR文が間違った番号を返す

e = 1; 
f=0; 

if(e==1){f=1;} 
if(e==2){f=2;} 
if(e== 3 or 4){f=4;} 
echo f; 
+2

'場合は、(Eの== 3またはE == 4){F = 4;}'あなたはまた、私たちにエーテル:右の変数構文を必要とする... –

+0

は、あなたや文では動作しません。あなたがそう思っているように。基本的に次のようになります: 'e == 3 'または' '(4)' 'eが何であるかにかかわらず、' e == 3'が真であると評価された場合、 '4'は常にtrueと評価されます。 if文を入力します。また、すべての単一のif文があります。 – Rizier123

+0

エラー報告を有効にして、ぼんやりした画面を準備してください!あなたのページの上部に 'error_reporting(E_ALL);'を入れてください。 – MonkeyZeus

答えて

3

交換を試みてください:

if(e== 3 or 4){f=4;} 

if(e == 3 or e == 4){ f=4; } 

値4は、言語によってTRUEとみなされます。文がある(FALSE or TRUE)を見ているのであれば、あなたのコードでは、1 == 3は、FALSEあるのでfが4

に設定されている、TRUEに等しい。このリンク再見ておいてください。次の文は常にPHP Booleans

+0

_ "あなたのコードでは、3 == 3は偽です" _どの世界で??? 'e == 3'(あるいは' 1 == 3'/'2 == 3')を意味しませんか? – FirstOne

+0

修正済み。 eは1ではなく3である。 –

0

あなたはbooleansで見てみるならば、あなたはほとんどすべてがあることがわかりますが、PHPでtrueに(同じページに記載されたそれらの値を除く)に等しいです。常にtrueで、あなたはその(奇妙な、しかし予想外ではない)の結果を得る

if($e==3 or true) 

そしてanything or true以来:だから、あなたが本当に持っていることは、このようなものです。あなたは$eがあるかどうかを確認したい場合には


ので、同じようにそれを行う、3または4に等しい:これらはif..elseの文ではないので、すべての条件がされていることを

if($e==3 || $e==4){ 

注意チェック拡張バージョンを見てみましょう:

if($e==1){ 
    $f=1; 
} 
if($e==2){ 
    $f=2; 
} 
if($e==3 or 4){ 
    $f=4; 
} 

これ/ \は後者のみをチェックし、以前のフィットの場合なしですべての条件以来

if($e==1){ 
    $f=1; 
}elseif($e==2){ 
    $f=2; 
}elseif($e==3 or 4){ 
    $f=4; 
} 

は異なっています。


あなたはPythonのような、そのコードは、この一行に変換することができので、別のサイドノートが..:あなたのorステートメントの

$f = ($e==3 || $e==4) ? 4 : $e; 
+0

あなたはやり方を教えてくださいそれは正しい? – Barmar

1

、これはあなたが望むものである:

if (($e == 3) || ($e == 4)) { 
    $f=4; 
} 
0

を本当のことになるだろうことは

if(e== 3 or 4) 
関連する問題