2011-01-15 23 views
31

私は以前これまでに触れたことはありませんでしたが、3つの変数が同じかどうかテストする方法はありますか?以下、明らかに動作しませんが、私は次のように記述するエレガントな(そして正しい)方法を考えることはできません。PHP:3つの変数が等しいかどうかをテストする

if ($select_above_average === $select_average === $select_below_average) { }

答えて

49
if ((a == b) && (b == c)) { 
    ... they're all equal ... 
} 

あなたはすでにアダムによってあなたの答えを持っていますが、正しくこれを行う方法を覚えておくための良い方法は、あなたの場合にのみ、あなたは()ブレースでラップする必要があり、単一の検証のために覚えておくことです1つのチェックを行うと、if というステートメントによってすでに提供されている中カッコがあります。

例:

(B=== 場合

とあなたが複数のをやっている場合、

=== bの場合 & & C === D

ソプラノあなたは括弧のすべてのセットが検証チェックであることを覚えていれば、あなたはこのようなログインを持つことができます。

場合(((a === b || C === D)) & & FE ===)

文および他の多くの論理演算は、階層上で動作している場合、個々の量となるよう小切手内の小切手は親小切手に影響します。

a === bまたはc === dが失敗した場合、e === fはabとしてチェックされません。cdは、括弧で囲まれて返され、チェックされます。

希望はもう少しお手伝いします。

+2

ありがとう!私はまた、それから良いウィキペディアの記事を持っています! – Matty

+5

'=='ではなく '==='を使用します。 PHPの緩やかな平等は推移的ではありません! – Brilliand

+1

各比較の前後のかっこは*必須ではありません。 –

8
if ($select_above_average === $select_average 
    && $select_average === $select_below_average) { } 
18
$values = array($select_above_average, $select_average, $select_below_average); 

if(count(array_unique($values)) === 1) { 
    // do stuff if all elements are the same 
} 

はそれを行うための別の方法だろう。 transitive relation

+9

Yowza、7-11でSlurpeeを取得する代わりに700-11をブロックするために歩いて500マイル走行することについて話してください。 –

+1

しかし非常に非効率的です。 – Dogbert

+0

:)そういうわけで私は別の言い方をしました。既に答えが与えられているから:)。私はあなたのコメントを試して笑っていた。 – PeeHaa

5

によって

+1

役に立つ例。乾杯! –

1

私は、3つの配列のアイテムの量がこのシナリオのように同じであるかどうかを確認する必要があったというユニークな状況がありました。

これは私が思い付いたものです:この戦術は異なるアレイで、彼ら場合array_count_valuesを使用してフィールドをカウントし

$allfieldscount = array(count($fields), count($operators), count($values)); //store an array of the count of all the arrays. 

$same = array_count_values($allfieldscount);//returns an array by values in the array. We are looking to see only 1 item in the array with a value of 3. 

if(count($same) != 1){ 
    //Then it's not the same 
}else{ 
    //Then it's the same 
} 

(フィールド、演算子と値は、すべての配列であると仮定)

すべてが同じであれば、それが返す配列のカウントは '1'にな​​ります。それ以外の場合は同じではありません。そのことをもっと理解するためにphp.netのarray_count_valuesを調べてください。

関連する問題