2017-09-24 1 views
-1

これは本当の状態ですか? PHPで私にとってなぜうまくいかないのですか? Javascriptを:PHPではこれが正しい条件ですか?

var miString = 'hello'; 
if(miString == ('hello' || 'hola' || 'ciao' || 'merhaba')){ 
    alert('Welcome'); 
} 

:JSで

if($_SERVER['REQUEST_URI'] == ('index' || 'post' || 'about')){ 
    // why this not work for me? 
} 
+0

これは動作しないので、動作しません。それらを配列内に設定し、そのうちの1つが配列内にあるかどうかを確認する必要があります。 –

答えて

1

は、次のように:

if($_SERVER['REQUEST_URI'] == 'index' || $_SERVER['REQUEST_URI'] == 'post' || $_SERVER['REQUEST_URI'] == 'about'){ 
    // why this not work for me? 
} 

あなたが今やっていること、以来、true$_SERVER["REQUEST_URI"]を比較している:

var_dump("hello" || "index"); // bool(true) 

ので比較は常に真でありますなぜなら、2つの等号だけを使用しているからです。これは緩やかな比較です。 ===を使用した場合、stringbooleanと同じタイプではないため、結果はfalseになります。

もう一つの方法は、値が配列の値であるかどうかを確認しますアレイとin_array()を、使用することです:

$values = ["index", "post", "about"]; 
if (in_array($_SERVER["REQUEST_URI"], $values)) { 
0

、あなたはこれを効果的にやっている:

if (miString == 'hello') { 

論理OR演算子は、あなたを与えるだろうと言うことであること最初の真理値はこの場合は'hello'であり、それだけが比較に使用されます。

JSには、複数の比較のための演算子の省略形はありません。 ==オペレーション、switchステートメント、またはコレクション内のアイテムを検索するいくつかの構文を使用できます。あなたは完全にすべての比較を行う必要があり

0

あなたはこのような何かをしようとするつもりだ:

var miString = 'hello'; 
if(miString == 'hello' || miString == 'hola' || miString == 'ciao' || miString == 'merhaba'){ 
alert('Welcome'); 
} 
関連する問題