Programming Language/PHP

[PHP] 연산자 ( 대입연산자, 산술연산자, 증감연산자, 비교연산자, 논리연산자, 삼항연산자, 비트연산자, 형 변환연산자)

재테크하는 개발자 2019. 8. 28. 16:00

 

 

 

연산자란?

: 연산자는 +나 -와 같은 연산을 하는 기호입니다. PHP는 문자열을 포함하는 숫자를 그대로 산술 계산을 하는 등 암묵적 형변환(캐스팅)을 곳곳에서

합니다.

 

 

 

 

 


 

대입 연산자

: =은 대입 연산자로써, 왼쪽 항에 있는 변수or 상수등에 오른쪽 항의 값을 대입하고 설정합니다.

예를 들어 $a=2는 2를 $a변수에 넣는 식입니다.

 

 

 

$a, $b, $c를 각각 세개의 변수를 선언해줍니다. 그리고 우측에 100을 대입해줍니다.

그렇게되면 100이 $c에 대입되고, $c의 값인 100은 $b변수에 대입되고, $b의 값인 100이 $a에 대입됩니다.

그리고 출력해보면 모두 100이 나옵니다.

그리고 7번줄에서 $a변수에 1을 더해줍니다. 그러면 101이 출력됩니다.

 

 


 

 

복합 대입연산자

: 변수 자신에 대한 대입을 조합한 것입니다.

예를 들어 $a+=1은 $a = $a +1과 같습니다.

 

 

 

 

 

$a에 0을 대입해줍니다. 그리고 $a 복합대입연산자 +=를 사용해서 20을 더해줍니다.

즉, $a = $a+20이 됩니다. echo로 출력해보면 20이 출력됩니다.

 

 


 

 

산술 연산자

: 수치계산을 하는 연산자 입니다. a와b를 연산해서 결과를 계산하지만 변수의 값은 그대로 둡니다.

예를 들어 $total - 5는 변수 $total에서 5를 뺀값을 계산하는 연산자지만, 계산후에 변수 $total 값은 그대로 유지됩니다.

 

 

$amount변수에 54750값을 대입해줍니다.

$rest변수에는 $amount를 4로 나눈 나머지값을 대입해줍니다.

그리고 $person변수에 1인으로 계산해준 값을 대입해주고, 부족한 값을 $rest에 대입해줍니다.

 

 

 

 

문자열에 있는 숫자값을 사용해서 계산하는 방법입니다.

숫자가 들어있는 문자열을 계산식으로 사용하면 PHP는 자동으로 숫자 부분만 정수로 취해서 계산합니다.

 


 

증가 / 감소 연산자

: 변수에 1을 더하거나, 빼는 연산을 자주하게 되는데 ++$a는 변수 $a값을 1을 증가시킵니다.

--$a도 같은 형태로 1을 감소합니다.

 

 

$a변수에 0을 대입해줍니다.

그리고 $b변수에 $a++와 같이 ++를 변수 뒤에 쓰면 문장이 끝날 때 연산이 이루어집니다.

0의 값이 들어있으므로, 0을 먼저 대입하고 1이 증가합니다.

이것을 후치 증가 연산이라고 합니다.

반대로, $c에 0을 대입해주고, $d에 ++$c로 대입해주었습니다. ++가 앞에있으면 연산을 먼저 하기때문에 1이 대입됩니다.

그래서 $d는 값이 1이 대입됩니다.

\$에 있는 '\'는'$'를 문자로 표시하기 위한 이스케이프 시퀀스 입니다.

 

 

 


 

 

비교 연산자

: 비교연산자는 크기를 비교하는 연산자입니다. true 또는 false의 논리 값입니다.

 

 

$a변수에 7을 대입해주고, $b변수에 10을 대입해줍니다.

$result1와2변수를 각각 비교 연산자를 통해 비교해주고 boolean형으로 리턴되어서 true와 false가 출력됩니다.

 

 

 

 

 


 

 

논리 연산자

; 논리 값을 연산하는 것이 논리 연산자입니다. 논리 값을 연산한 결과도 논리 값이 됩니다.

 

 

and와 or은 &&와 ||로 쓸수있지만, 위 사진에서 실습은 and 와 or을 사용해주었습니다.

여기서 주의할점은 $result1 = ($test1 and $test2)를 괄호로 감싸주지않고, $result1 = $test1 and $test2라고 입력하면

에러가 발생합니다. 왜냐하면 =가 우선순위에 있기때문에 $test1이 $result1에 먼저 대입을 하고 and처리하기때문에

우선순위때문에 괄호를 반드시 붙여줍니다.

 

 


 

 

삼항 연산자

: ?:은 피연산자가 세 개 있는 연산자로 삼항 연산자라고 합니다.

형식은 논리식 ? true일때의 값 : false일때의 값 입니다.

 

 

mt_rand는 0~50사이에 있는 정수에 랜덤으로 한개의 정수값을 만들어줍니다.

$a와 $b를 각각 변수에 대입해줍니다.

출력된 값을 보면 $a는 35가 대입됬고, $b는 48이 대입됬습니다.

삼항연산자를 통해 $a>$b를 비교해주면 당연히 $b가 크기때문에 false가 됩니다.

그렇기에 $bigger변수에는 $b값이 대입됩니다.

 

 


 

 

 

비트 연산자

: 비트 시프트는 지정한 방향으로 자릿수를 옮기는 연산입니다.

10진수의 수치를 왼쪽으로 한 자리 옮기면 값이 열배가 되고, 2진수 값을 왼쪽으로 한자리 옮기면 값이 두배가 됩니다.

 

 

 

 


 

 

형 변환 연산자

: PHP는 변수에 형 선언을 할 필요가 없으며, 연산에 따라 값의 형이 자동으로 변환됩니다.

따라서, 값의 형을 의식하지 않고 코드를 작성할 수 있습니다. 가끔 형을 특정해야 할 때가 있는 이럴 때는 형변환 연산자를 사용합니다.

다만, 원래의 값을 변환하지 않고 값의 평가를 지정된 형으로 하는 것뿐입니다.

 

 

$theDate를 논리 값으로 평가하고 그 결과값을 $isAccess에 대입합니다.

$isAccess에는 $theDate에 new DateTime이라는 클래스 인스턴스를 대입했기에 값이 들어있기에 (bool)형변환해주면 true대입됩니다.

 

 

 

 

instanceof는 변수가 지정한 클래스의 인스턴스인지를 조사하는 연산자 입니다.

지정한 클래스의 인스턴스면 true, 그렇지않다면 false가 됩니다.