none | instanceof |
type |
right | ! |
논리 연산자 |
left |
* / % |
| 산술 연산자
|
left |
+ – . |
산술 연산자 및 문자열 연산자 |
|
left10e3fdaca48eb0367c6d60dbc98f885d> |
bit 연산자
|
none |
== != === !== a8093152e673feb7aba1828c43532094비교 연산자 |
left | & |
비트 연산자 및 참조
|
left
^ |
비트 연산자 |
|
left
| |
비트 연산자 |
|
left
&& |
논리 연산자 |
|
left
|| |
논리 연산자 |
|
left
? : |
삼항 연산자 |
|
right
= += -= *= /= .= %= &= | = ^= 639513f5eb9d8dcbce09d6b5cb44cf73>= => |
| 대입 연산자 |
left |
and |
논리 연산자 |
left |
| |
left 또는 |
논리 연산자 |
left |
,
는 여러 곳에서 사용됩니다 |
|
|
우선순위가 동일한 연산자의 경우 왼쪽 조합 방향은 왼쪽에서 오른쪽 오른쪽 평가, 오른쪽 조합 방향 또는 그 반대를 의미합니다. 연관 방향이 없는 동일한 우선순위의 연산자는 자체적으로 결합될 수 없습니다. 예를 들어, PHP 1 d66d2a93259ca9392db29f00ed43fda0 1은 잘못된 구문이지만 1 <= 1 == 1은 그렇지 않습니다. T_IS_EQUAL 연산자의 우선순위가 T_IS_SMALLER_OR_EQUAL 연산자의 우선순위보다 낮기 때문입니다.
예제 방향과 결합하여 코드는 다음과 같습니다 | <?php
$a = 3 * 3 % 5; // (3 * 3) % 5 = 4
$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2
$a = 1;
$b = 2;
$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5
// mixing ++ and + produces undefined behavior
$a = 1;
echo ++$a + $a++; // may print 4 or 5
?>
PS: 괄호를 사용하면 꼭 필요하지 않은 경우에도 일반적으로 코드의 가독성을 높일 수 있습니다. |
=는 대부분의 다른 연산자보다 우선순위가 낮지만, PHP는 여전히 다음과 같은 표현식을 허용합니다: if (!$a = foo()), 이 경우 foo()의 반환 값은 $a에 할당됩니다. |