연산자
산술 연산자
산술 연산은 흔히 우리가 접하는 더하기 빼기 곱하기 나누기를 말합니다.
어려운 말로 가감승제(加減乘除) - 모처럼 오바했음 ... ^^ (씨익) .... 퍼버벅.. @# 지송..ㅜㅜ
연산자 | 기능 |
---|---|
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ | 나누기 |
% | 나머지 |
산술 연산자는 우리가 수학시간에 많이 봐오던 것들이니 익숙하실 것입니다. 곱하기, 나누기 기호가 조금 특이한 것과 나머지?라는 연산자가 있다는 것이 특이한 점이네요.
대입 연산자
대학가는 연산자가 아닙니다. ㅡㅡ;; ( 오늘따라 무지 오바하는 군요.. 지송함돠.. 주의 할게요 .. )
기본 대입 연산자는 =
입니다.
일반적으로 =
기호는 같다라고 생각합니다.
그러나 a = b
는 a 와 b 는 같다가 아니라.. (PHP에서 실제 같다는 ==
입니다.)
b의 값을 a에다가 대입한다 라는 뜻입니다.
그래서 대입 연산자이지요.. ^^
결과적으로는 a 와 b 가 같지만.. 의미상 아주 다릅니다. 특히 프로그램에서는 치명적이죠..
$a = ($b = 4) + 5; // $a는 9, $b는 4의 값을 가진다.
괄호 안이 가장 우선으로 처리됩니다. 따라서 $b 는 4 가 되고 4 가 된 $b에 5를 더한 그 값이
$a 에 입력됩니다. 결과는 $a 는 9 , $b 는 4입니다.
비교 연산자
비교 연산은 말 그대로 두 개의 값을 비교하는 것입니다
연산자 | 기능 |
---|---|
< | 작다 |
> | 크다 |
<= | 작거나 같다 |
>= | 크거나 같다 |
== | 같다 |
!= | 같지 않다 |
증감 연산자
연산자 | 기능 |
---|---|
++$a | $a를 1 증가후 $a를 반환 |
$a++ | $a를 반환후 $a 에 1 증가 |
--$a | $a를 1감소후 $a를 반환 |
$a-- | $a를 반환후 $a 에 1 감소 |
예제를 보면 이해가 갈겁니다.
<?php
echo "<h4>후 증가</h4>";
$a = 5;
echo " \$a++: " . $a++ . "<br>\n";
echo " \$a : " . $a . "<br>\n";
echo "<h4>선 증가</h4>";
$a = 5;
echo " ++\$a: " . ++$a . "<br>\n";
echo " \$a : " . $a . "<br>\n";
echo "<h4>후 감소</h4>";
$a = 5;
echo " \$a--: " . $a-- . "<br>\n";
echo " \$a : " . $a . "<br>\n";
echo "<h4>선 감소</h4>";
$a = 5;
echo " --\$a: " . --$a . "<br>\n";
echo " \$a : " . $a . "<br>\n";
?>
결과
후 증가
$a++: 5
$a : 6
선 증가
++$a: 6
$a: 6
후 감소
$a--: 5
$a : 4
선 감소
--$a: 4
$a: 4
논리 연산자
예 | 이름 | 결과 |
---|---|---|
$a and $b | and | 두 변수 모두 참일 때 TRUE. |
$a or $b | or | 두 변수중 적어도 하나가 참이면 TRUE |
$a xor $b | xor | 둘 중 하나만 참이면 TRUE, 둘이 같으면 FALSE |
!$a | not | 변수가 거짓일 때 TRUE, 참이면 FALSE |
$a && $b | and | 두 변수 모두 참일 때 TRUE. |
$a || $b | or | 두 변수중 적어도 하나가 참이면 TRUE |
&& 이나 and, || 나 or 는 같습니다.
그러나 따로 해놓은 이유는 우선순위가 서로 다르기 때문입니다.
문자열 연산자
문자열을 더할 때는 . (쩜) 연산자를 씁니다.
$a = "안녕";
$b = "하세요";
일 때 두 문자열을 더하고 싶으면 아래와 같이 하시면 됩니다.
$c = $a . $b;
$c 에 한마디를 더 추가하고 싶을 때는..
$c .= " 반가워요~";
$c .= "";
는 $c = $c . "";
와 같은 줄여쓰기 방법입니다.
결과적으로는 아래와 같습니다.
$c = "안녕하세요 반가워요~";
배열 연산자
배열을 서로 더하기 위해서는 "+" 플러스 기호를 이용하여 가능합니다.
왼쪽의 배열에 오른쪽 배열을 더하여 집니다.
<?php
$a = array("a" => "사과", "b" => "바나나");
$b = array("a" =>"배", "b" => "딸기", "c" => "포도");
$c = $a + $b;
?>
결과는
$c = array("a" =>"사과", "b" => "바나나", "c" => "포도");
같은 a,b 키를 가지는 값은 덮어쓰여지지 않고 중복되지 않는 것만 추가가 되었습니다.
실행 연산자
실행 연산자(` `)를 이용하여 서버에 쉘명령을 실행할 수 있습니다.
실행 연산자는 백틱으로 작은 따옴표가 아닙니다. 키보드의 Esc 아래키입니다.
<?php
$output = `ls -al`;
echo "<pre>$output</pre>";
?>
이 연산자는 shell_exec()
함수를 사용하는 것과 동일합니다.
보안문제로 인해 PHP가 안전모드로 동작하거나 shell_exec()
함수의 사용이 제한되었다면
이 연산자 또한 실행되지 않습니다.
에러제어 연산자
PHP 표현식에서 에러가 발생할 수 있는 곳에 "@" 기호를 붙이므로해서
에러를 출력하지 않게 하는 연산자입니다.
<?php
@include "a.php";
?>
만약 a.php 파일이 없을 경우 include 가 실패하여 에러를 표시하게 되지만
에러제어 연산자가 있기 때문에 에러를 표시하지 않고 넘어가게 됩니다.
에러가 발생해도 프로그램의 실행에는 상관없는 그러한 경우에 이 연산자를 사용하시면 됩니다.
비트 연산자
비트 연산은 숫자를 2진수로 생각하여 각각의 비트별로 계산하는 연산입니다.
예 | 이름 | 결과 |
---|---|---|
$a & $b | and | 양쪽의 비트가 모두 1인 자리를 1로 나머지는 0으로 세팅 |
$a | $b | or | 둘중 적어도 하나의 비트가 1이면 그 자리를 1로 모두 0이면 0으로 세팅 |
$a^$b | xor | 비트가 같으면 그 자리를 0으로 다르면 1로 세팅 |
~$a | not | 모든 비트를 0은 1로 1은 0으로 세팅 |
$a << $b | left shift | 모든 비트를 왼쪽으로 $b자리씩 이동 (한번 이동은 2를 곱한 것과 같음) |
$a >> $b | right shift | 모든 비트를 오른쪽으로 $b자리씩 이동 (한번 이동은 2를 나눈 것과 같음) |
실제 적용 예) 12는 2진수로 1100 이고 5는 2진수로 0101 입니다.
예 | 설명 | 결과 |
---|---|---|
12 & 5 | 1100 과 0101에서 모두 1인자리만 1 따라서 0100 | 4 (0100) |
12 | 5 | 1100 과 0101에서 하나만 1이어도 1 따라서 1101 | 13 (1101) |
12 ^ 5 | 1100 과 0101에서 같으면 0 다르면 1 따라서 1001 | 9 (1001) |
~12 | 1100을 반대로 따라서 0011 | 3 (0011) |
12 << 2 | 1100을 왼쪽으로 두자리 이동 따라서 110000 | 48 (110000) |
12 >> 2 | 1100을 오른쪽으로 두자리 이동 따라서 0011 | 3 (0011) |
비트 연산자나 실행 연산자는 특별한 경우에만 사용하므로 처음에는 그냥 넘어가셔도 괜찮습니다.