할당 연산자
할당 연산자
값을 변수에 넣는 할당 연산자와, 계산과 할당을 한 번에 해주는 복합 할당 연산자를 알아봅니다.
출처: Assignment
본문
기본 할당 연산자는 "="예요. 처음에는 이걸 "같다(equal to)"라고 생각하기 쉬운데, 그렇게 보면 안 돼요. 이 연산자는 왼쪽 피연산자가 오른쪽 표현식의 값으로 설정된다(get set to)는 뜻입니다.
할당 표현식의 값은 할당된 값이에요. 즉 "$a = 3"의 값은 3입니다. 이 덕분에 몇 가지 깔끔한 일을 할 수 있어요:
<?php
$a = ($b = 4) + 5; // $a is equal to 9 now, and $b has been set to 4.
var_dump($a);
?>
기본 할당 연산자 외에도 모든 이항 산술, 배열 합집합, 문자열 연산자에는 "결합 연산자"가 있어요. 어떤 값 하나를 표현식 안에서 사용하고 난 뒤, 그 값이 그 표현식의 결과로 설정되게 해주죠. 예를 들어:
<?php
$a = 3;
$a += 5; // sets $a to 8, as if we had said: $a = $a + 5;
$b = "Hello ";
$b .= "There!"; // sets $b to "Hello There!", just like $b = $b . "There!";
var_dump($a, $b);
?>
할당은 원래 변수를 새 변수로 복사한다는 점(값에 의한 할당)을 주의하세요. 그래서 한쪽을 바꿔도 다른 쪽은 영향을 받지 않아요. 빡빡한 반복문 안에서 큰 배열 같은 걸 복사해야 할 때도 이 사실이 중요해요.
PHP에서 평소의 값에 의한 할당 동작에 예외가 있는데, 바로 객체예요. 객체는 참조로 할당됩니다. 객체를 명시적으로 복사하려면 clone 키워드를 쓸 수 있어요.
참조에 의한 할당
참조에 의한 할당도 지원되며, "$var = &$othervar;" 문법을 사용해요. 참조에 의한 할당은 두 변수가 결국 같은 데이터를 가리키게 된다는 뜻이고, 어떤 것도 복사되지 않습니다.
<?php
$a = 3;
$b = &$a; // $b is a reference to $a
print "$a\n"; // prints 3
print "$b\n"; // prints 3
$a = 4; // change $a
print "$a\n"; // prints 4
print "$b\n"; // prints 4 as well, since $b is a reference to $a, which has
// been changed
?>
new 연산자는 자동으로 참조를 반환하므로, new의 결과를 참조로 할당하는 것은 오류예요.
<?php
class C {}
$o = &new C;
?>
Parse error: syntax error, unexpected token ";", expecting "("
참조와 그 잠재적 용도에 대한 자세한 내용은 매뉴얼의 References Explained 섹션에서 찾을 수 있어요.
산술 할당 연산자
| 예제 | 동등 표현 | 연산 |
|---|---|---|
$a += $b |
$a = $a + $b |
덧셈 |
$a -= $b |
$a = $a - $b |
뺄셈 |
$a *= $b |
$a = $a * $b |
곱셈 |
$a /= $b |
$a = $a / $b |
나눗셈 |
$a %= $b |
$a = $a % $b |
나머지 |
$a **= $b |
$a = $a ** $b |
거듭제곱 |
비트 할당 연산자
| 예제 | 동등 표현 | 연산 |
|---|---|---|
$a &= $b |
$a = $a & $b |
비트 AND |
| `$a | = $b` | `$a = $a |
$a ^= $b |
$a = $a ^ $b |
비트 XOR |
$a <<= $b |
$a = $a << $b |
왼쪽 시프트 |
$a >>= $b |
$a = $a >> $b |
오른쪽 시프트 |
기타 할당 연산자
| 예제 | 동등 표현 | 연산 |
|---|---|---|
$a .= $b |
$a = $a . $b |
문자열 결합 |
$a ??= $b |
$a = $a ?? $b |
널 병합 |
참고
- 산술 연산자
- 비트 연산자
- 널 병합 연산자