PHP 연산자

PHP 연산자 (Operators)

PHP 코드를 작성하다 보면 값들을 더하거나, 비교하거나, 조건에 따라 갈라야 할 때가 있어요. 바로 그때 사용하는 게 **연산자(operator)**예요. 문법 하나씩 외우기 전에, 연산자가 대체 무엇이고 어떻게 분류되는지부터 가볍게 훑어볼게요.

출처: PHP 매뉴얼

본문

연산자는 무엇인가요?

연산자는 하나 이상의 값(혹은 표현식)을 받아 또 다른 값을 만들어 내는 것이에요. 프로그래밍 용어로 이렇게 값을 받아 결과를 돌려주면, 그 구성 자체가 하나의 **표현식(expression)**이 돼요. 즉 연산자가 붙은 식은 곧 하나의 값으로 평가된다고 생각하면 돼요.

예를 들어 2 + 3+라는 연산자에 값 두 개(2, 3)를 넣어 5라는 값을 만들어 내죠. 이렇게 연산자에 전달되는 값을 **피연산자(operand)**라고 불러요.

피연산자 개수에 따른 분류

연산자는 받는 값의 개수에 따라 셋으로 나눌 수 있어요.

  • 단항 연산자(Unary) — 값을 하나만 받아요. 대표적으로 논리 부정인 !나 증가 연산자인 ++가 여기에 속해요.
  • 이항 연산자(Binary) — 값을 두 개 받아요. 익숙한 산술 연산자 +(덧셈)와 -(뺄셈)가 대표적이고, PHP 연산자의 대부분이 이 범주에 들어와요.
  • 삼항 연산자(Ternary) — 값을 세 개 받는 연산자는 단 하나뿐이에요. 바로 ? :인데요, 흔히 "삼항 연산자"라고 부르지만 정확히 말하면 **조건 연산자(conditional operator)**라고 하는 게 더 맞아요.

우선순위와 결합 방향

서로 다른 연산자가 여럿 섞인 표현식이 정확히 어떻게 평가되는지는 **연산자 우선순위(operator precedence)**와 **결합 방향(associativity)**이라는 규칙이 정해요. 예를 들어 2 + 3 * 4에서 곱셈이 먼저 계산되는 건 우선순위 덕분이죠. PHP 연산자의 전체 목록과 이 규칙은 Operator Precedence 섹션에 자세히 나와 있어요.

객체 연산자 오버로딩

마지막으로, PHP에는 객체에 대해 일부 연산자를 **오버로딩(overloading)**할 수 있게 해주는 PECL 확장이 있어요. 객체가 연산자에 어떻게 반응할지 직접 정의하고 싶다면, Operator Overloading for Objects 섹션을 참고하면 돼요.

더 알아보기

PHP 연산자는 아래와 같은 주제들로 나뉘어 다뤄져요. 각각의 연산자가 궁금하면 해당 섹션을 찾아보면 됩니다.

  • 연산자 우선순위 (Operator Precedence)
  • 산술 연산자 (Arithmetic)
  • 증가·감소 연산자 (Increment and Decrement)
  • 대입 연산자 (Assignment)
  • 비트 연산자 (Bitwise)
  • 비교 연산자 (Comparison)
  • 오류 제어 연산자 (Error Control)
  • 실행 연산자 (Execution)
  • 논리 연산자 (Logic)
  • 문자열 연산자 (String)
  • 배열 연산자 (Array)
  • 형 변환 연산자 (Type)
  • 함수 관련 연산자 (Functional)