2016-06-22 50 views
-1

其實我有1個這裏的程序PHP的小問題,我給2例程序性文件的PHP至極一個是最好的

例如1

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

例如2

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

什麼我問即使這兩種方式似乎都起作用,那麼它們的寫作是否有任何區別?

感謝

+0

guess $ text =='test'(你忘記了一個=符號) – num8er

+0

是的抱歉,我編輯了它,但問題是這兩個聲明之間有區別,除了第一個是寫的更長的事實。 – Mireille28

+1

你已經回答了你自己的問題。 var_dump($ text =='test'&&($ test ['rank']> 1 || $ test ['admin'] == 1)and var_dump($ test ['rank']> 1 && $ text =='test'|| $ test ['admin'] == 1 && $ text =='test')如果它們返回相同的結果,則參數的任何變化都會使用最短的值。 – num8er

回答

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)) { 

田田!

相關問題