php
PHP - 연산자 우선권
다음 표를 보면 우선 순위가 */% 보다 ++나 --가 우선 순위를 가집니다.
그림에서 제시된 대로라면, == 보다 < 나 <= 이 우선 순위를 가지기 때문에 다음 조건식은 참이 아닙니다.
산술 연산자를 예로 들자면, + - , 보다 * / % 이 우선 순위를 가지게 되므로 우리가 원하는 결과 값이 나오지 않습니다.
필요하다면, 우선권이 가장 높은 괄호를 사용해서 원하는 값을 얻을 수 있습니다.
예를 들어 (1 + 5) * 3 은 18 이라는 결과를 얻게 되는데, 연산자 우선권이 같으면, 왼쪽에서 오른쪽으로 비교하여 결합합니다.
순 위 | 연산자 | 결 합 |
---|---|---|
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 댓글