2016-06-22 4 views
-1

입니다절차 문 PHP는 느릅 나무 하나 내가이 예를 줄 내가 여기 절차 PHP는 약 1 개 작은 질문이 실제로 가장

예 1

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

예 내가 무엇을 물어 2

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

비록 두 가지 방법이 효과가있는 것처럼 보이 더라도 그 차이점은 무엇입니까?

감사

+0

추측 $ text == 'test'(당신은 = 기호를 잊어 버렸습니다) – num8er

+0

네, 죄송합니다. 질문은 두 문장의 차이점이 있습니다. – Mireille28

+1

당신은 당신의 질문에 대답했습니다. var_dump ($ text == 'test'&& ($ test [ 'rank']> 1 || $ test [ 'admin'] == 1)와 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)) { 

타다!