우리는 연산자에 대해 이미 잘 알고 있습니다. 초등학교 시절부터 대소 비교하는 문제를 많이 다루었고 중학교 때는 집합에서 논리곱, 논리합 등을 배웠습니다. 그래서 수학에서 사용하는 것과 다른 부분만 알고 넘어가면 됩니다.
연산자는 7가지로 나눌 수 있습니다.
- 산술 연산자 Arithmetic operators
- 대입 연산자 Assignment operators
- 비교 연산자 Comparison operators
- 증감 연산자 Increment/Decrement operators
- 논리 연산자 Logical operators
- 문자열 연산자 String operators
- 배열 연산자 Array operators
[PHP] 강좌 #9 산술, 대입, 비교, 증감 연산자
산술 연산자 Arithmetic operators
+ | 덧셈 | $x + $y |
- | 뺄셈 | $x - $y |
* | 곱셈 | $x * $y |
/ | 나눗셈 | $x / $y |
% | 나머지 | $x % $y |
이런 연산자는 프로그래밍 언어에서 자주 사용됩니다.
나머지(%) 연산자는 어떤 수를 원하는 수로 나눈 나머지 값을 말합니다. 어떤 수를 10으로 나누면 나머지 값이 0에서 9까지 분포됩니다.
나머지 연산자를 언제 사용하는지 예를 보이겠습니다.
rand()라는 함수가 0에서 32767까지 랜덤한 값을 나타내는데요, 1에서 10까지 랜덤한 수를 얻고 싶다면 다음과 같이 쓸 수 있습니다. %10을 하면 나머지가 0에서 9까지 나오는데 여기서 1을 더하니 1에서 10까지 랜덤한 숫자가 나오게 되는 것이지요.
echo rand()%10+1;
위 코드를 좀 더 편리하고 쓰고 싶은 분은 함수 rand(1,10)을 사용하면 됩니다. 첫 인자값은 랜덤 최소값이고 두 번째 인자값은 랜덤 최대값입니다.
거듭 제곱 **는 PHP 5.6에서 사용가능하다고 합니다.
대입 연산자 Assignment Operators
수식 | 같은 표현 |
x = y | x = y |
x += y | x = x + y |
x -= y | x = x - y |
x *= y | x = x * y |
x /= y | x = x / y |
x %= y | x = x % |
x = y; 라는 이야기는 수학에서처럼 똑같다가 아니라 y값을 x에 대입하겠다는 이야기입니다. x = x + y;라고 쓰기 귀찮으니 식을 줄여서 x+=y;라고 표현할 수 있습니다. 나머지 산술 연산자를 이용해서 대입 연산자를 표현할 수 있습니다.
비교 연산자 Comparison operators
== | $x == $y | 서로 같다 |
=== | $x === $y | 서로 같고 자료형도 같다. |
!= | $x != $y | 서로 같지 않다. |
<> | $x <> $y | 서로 같지 않다. |
!== | $x !== $y | 서로 같지 않거나 혹은 자료형이 같지 않다. |
> | $x > $y | 크다 |
< | $x < $y | 작다 |
>= | $x >= $y | 크거나 같다 |
<= | $x <= $y | 작거나 같다 |
수학에서는 = 기호가 서로 같다를 의미하는데요, 프로그래밍 언어에서는 = 기호는 대입 연산자이고 == 기호가 비교 연산자입니다. 아래 코드를 실행하면 참일 때 1이 나오거나 거짓라면 아무것도 나올텐데요, 두 값이 서로 같습니까? 어떤 값이 출력 될 것 같습니까?
$x = 100;
$y = “100”;
echo $x == $y;
위 코드는 1값이 출력됩니다. 대부분 언어에서는 문자열 100을 숫자로 형변환해서 비교해야하지만 PHP에서는 문자와 숫자를 간편하게 비교 연산자(==)로 서로 값을 비교할 수 있습니다. 형변환해야 하는 수고스러움이 사라지는 것이지요. 참고로 C언어에서 문자열을 숫자로 바꾸기 위해 atoi함수를 사용해야합니다.
비교 연산자 ‘===’는 값이 서로 같고 자료형까지 일치할 때 참값으로 표현합니다.
$x = 100;
$y = “100”;
echo $x === $y; // 출력값 없음
위 코드는 값은 같지만 자료형이 일치하지 않아 거짓값이 되며 따라서 출력값은 없습니다.
‘!=’와 ‘<>’는 서로 같지 않다는 비교연산자로 똑같은 표현입니다. ‘!==’ 연산자는 값이 서로 같지 않거나 혹은 자료형이 서로 같지 않을 때 참값으로 표현합니다.
$x = 100;
$y = “100”;
echo $x !== $y; // 출력값 1
위 코드는 값이 서로 같지만 자료형이 틀려 참값으로 1을 출력합니다.
증감 연산자 Increment/Decrement operators
++$x 전위형 증가 연산자 Pre-increment
$x++ 후위형 증가 연산자 Post-increment
--$x 전위형 감소 연산자 Pre-decrement
$x-- 후위형 감가 연산자 Post-decrement
먼저 전위형부터 살펴보겠습니다.
++$x, $x+=1, $x=$x+1, 모두 똑같은 표현입니다. 1을 증가시킨다는 의미입니다. ‘--’도 같은 형태이며 1을 감소시킨다는 의미입니다. 예제를 살펴보겠습니다.
$x = 1;
echo ++$x; // 출력값 2
echo $x++; // 출력값 2 <-- 왜????
echo $x; // 출력값 3
출력값이 왜 2,2,3 순서로 나왔는지 이해가 되셨나요? $x++가 이상해보일 수 있습니다.
$x++는 명령이 끝난 후 즉 세미콜론(;)이 끝난 후에 증가시키겠다는 이야기입니다. echo $x++는 먼저 $x값을 리턴한 후 echo명령이 끝난 후 증가시키겠다는 뜻이지요. 그래서 $x값이 2에서 3으로 증가하지 않았고 나중에 3으로 증가하였습니다.
너무 길어 질 것 같아서 논리 연산자, 문자열 연산자, 배열 연산자는 다음 시간이 다루어 보도록 하겠습니다.
[Copyright ⓒ 블로그채널 무단전재 및 재배포 금지]
'컴퓨터 언어 > PHP' 카테고리의 다른 글
[PHP] 강좌 #11 조건문 if...else...elseif (1) | 2015.04.17 |
---|---|
[PHP] 강좌 #10 논리, 문자열, 배열 연산자 (0) | 2015.04.16 |
[PHP] 강좌 #8 상수 Constant, define 함수 (1) | 2015.04.14 |
[PHP] 강좌 #7 문자열 함수 String Function (0) | 2015.04.13 |
[PHP] 기본 자료형 Data Types (0) | 2015.04.12 |