다음 표를 보면 우선 순위가 */% 보다 ++나 --가 우선 순위를 가집니다.

순 위 연산자 결 합
1 ( ) 묶음
2 ++, -- 무결합
3 ! 오른쪽
4 *, /, % 왼쪽
5 +, -, . 왼쪽
6 <<, >> 왼쪽
7 <, <=, >, >=, <> 무결합
8 ==, !=, ===, !== 무결합
9 & 왼쪽
10 ^ 왼쪽
11 | 왼쪽
12 && 왼쪽
13 || 왼쪽
14 ? : 왼쪽
15 =, +=, -=, *=, /=, .=, %=, &=, |=, ^=, <<=, >>= 오른쪽
16 and 왼쪽
17 xor 왼쪽
18 or 왼쪽
19 , 왼쪽

그림에서 제시된 대로라면, == 보다 < 나 <= 이 우선 순위를 가지기 때문에 다음 조건식은 참이 아닙니다.

<?php  
 if(1 > 2 == 2){  
    echo "테스트";  
 } 
 // 결과:  



 if(2 == 2 < 1){   
    echo "테스트";   
 }  
 // 결과: 
 ?>

산술 연산자를 예로 들자면, + - , 보다 * / % 이 우선 순위를 가지게 되므로 우리가 원하는 결과 값이 나오지 않습니다.

<?php  
 $a = 1 + 5 * 3;  
 echo $a; // 결과: 16 


 $b = 5 * 3 + 1;  
 echo $b; // 결과: 16 
 ?>

필요하다면, 우선권이 가장 높은 괄호를 사용해서 원하는 값을 얻을 수 있습니다.

예를 들어 (1 + 5) * 3 은 18 이라는 결과를 얻게 되는데, 연산자 우선권이 같으면, 왼쪽에서 오른쪽으로 비교하여 결합합니다.

<?php  
 // * / % 우선권이 같으면 *이 우선권을 가지며, 
 // 뒤이어 / 이 우선권을 가지고, 마지막으로 % 이므로 
 // (3 * 3) % 5 = 4 가 됩니다. 
 $a = 3 * 3 % 5; 
 // 결과: 4  


 // 5 % (3 * 3) = 6 이 됩니다. 
 $a = 5 % 3 * 3; 
 // 결과: 6 


 // (true ? 0 : true) ? 1 : 2 = 2  
 $a = true ? 0 : true ? 1 : 2;  
 // 결과: 2  


 // = 보다 + 이 우선권을 가집니다. 
 // $a = ($b += 3) 
 $a = 1;  
 $b = 2;  
 $a = $b += 3;  
 // 결과: $a = 5, $b = 5  
 ?>

0 댓글