2016-06-22 4 views
-1

である私が尋ねるどのような1手続きステートメントPHPのウィッヒ1は、実際に私はここに手続きPHP約1つの少し疑問を持っている最高の

if($test['rank'] > 1 && $text == 'test' || $test['admin'] == 1 && $text == 'test'){ 

例2

if($text == 'test' && ($test['rank'] > 1 || $test['admin'] == 1)){ 

2例に

例を与えます両方の方法で動作しているように見えても、それらの書き込みを実行するには違いがありますか?

おかげ

+0

推測$ text == 'test'(あなたは=記号を忘れてしまいました) – num8er

+0

はい私はそれを編集しましたが、問題は2つのステートメントの違いは最初のものが長いということです。 – Mireille28

+1

あなたはあなた自身の質問に答えました。 var_dump($ text == 'test' &&($ test ['rank']> 1 || $ test ['admin'] == 1)とvar_dump($ test ['rank']> 1 && $ text == 'test' || $ test ['admin'] == 1 && $ text == 'test')それらがparamsの任意のバリエーションで同じ結果を返す場合は、最短のものを使用してください。 – num8er

答えて

1

なし、最初の1が原因欠け括弧で読むのは非常に困難であることを除いて違いはありません。

ので>と==が& &と||の前に評価を受けるには、この方法でコードを書くことができます。

$p = $test['rank'] > 1; 
$q = $text == 'test'; 
$r = $test['admin'] == 1; 

if($p && $q || $r && $q) { 

あなたがPHP operators precedenceをチェックすると、あなたは& &が||前に評価を受けることを持っているので、あなたが持っている:

if(($p && $q) || ($r && $q)) { 

ので... $ qはにそれが同等作り、両方の式で会うしなければなりません

if($q) { 
    if($p || $r) { 

のと同等です。

if($q && ($p || $r)) { 

が$ P、$ qを交換し、$を使用すると、最終的に取得rを:

if($text == 'test' && ($test['rank'] > 1 || $test['admin'] == 1)) { 

多田!

関連する問題