PHP기초 - 변수 및 연산자

2022. 10. 20. 13:11PHP

변수와 연산자

1. 변수와 데이터 타입
 - 변수는 값을 저장하는 공간의 이름이다. 변수는 프로그램의 가장 기본 요소이다.

 - 변수는 변수명, 주소, 타입, 값으로 구성

 - PHP는 다른 언어와 달리 변수의 주소를 직접 참조할 수 없어서 변수명, 타입, 값 만 이용한다. 

 

$a = 1;


 - 변수는 '$' 기호로 시작한다. - 변수명은 문자, 숫자, _(밑줄)로 구성된다.
 - 첫 글자는 반드시 문자로 시작한다.
 - 변수명에 한글을 쓸 수 있으나 사용하지 않는다. - 변수명은 대소문자를 구별한다.
 - $abc, $ABC는 완전히 다른 변수다.(변수맨앞이 소문자면 소문자만 대문자면 대문자만)

 

EX)

입력

$a = 1;                          - $a라는값에 1을 저장한다.
echo("\$a = $a");       - \$a는 $a라는 문자를 그대로 출력해준다.

 

출력

$a = 1

 

EX)

1   +    2          =  3

"1"  .  "2"        =  "12"      - ""안에 들어있는것은 문자로 취급된다.

 

EX)

$2a = 1;                           - 앞에 숫자가 붙으면 안된다.
echo("\$2a = $2a");

 

데이터 타입

입력

$a = 1;                                   - $a라는 값에 1을 저장
$a = "AA";                             - $a라는 값에 AA을 저장 / " " 안에 있기때문에 그대로 출력

echo("\$a = $a");

 

출력

$a = AA

 

$a는 1이 저장되었을 때는 정수형 이지만 나중에 "AA"가 저장되면 문자열형으로 자동으로 형이 변환된다. 이
런 기능은 프로그래머가 골치 아프게 변수의 타입을 직접 변경시켜줘야 하는 타 언어와 달리 프로그램의 유연
성을 제공한다.

 

입력

$bo = TRUE;                      -  $bo 라는 값에 TRUE(true는 참 1이다)을저장
$int = (integer)$bo;             -  $int 라는 값에 정수형$bo 값을 출력
$str = (string)$bo;               -  $str 라는 값에 문자열$bo 값을 출력
echo(" \$int = $int<br>        -  <br> = enter
 \$str = $str");

 

출력

$int = 1
$str = 1

 

settype() 함수를 사용하면 전달받은 변수의 타입을 변경

$bo = TRUE;
$int = settype($bo, integer); // $int = (integer)$bo;    -  적을때 $bo가 앞으로 오고 settype안에 변수와 타입을 적는다
$str = settype($bo, string); // $str = (string)$bo;        -   "                                                                                           "
echo(" \$int = $int<br>
 \$str = $str");

 

인용 부호와 문자열

입력

$a = "AA";
$b = 'AA';
echo("\$a = $a<br>
 \$b = $b");

 

출력

$a = AA
$b = AA

 

$a와 $b에 저장된 문자열에는 차이가 없다. 변수에 일반 문자를 저장할 때 단일 인용 부호를 사용하건, 이중 
인용 부호를 사용하건 차이가 없기 때문이다. 그러나 특수 문자(Escaped Character)가 포함되어 있을 때는 
이야기가 달라진다. 특수 문자는 개행(carriage)이나 탭과 같이 대부분 화면을 제어하거나 특별한 기호를 표현
하기 위해서 사용되는 것들로 대부분 특별한 용도에 이용된다. 만일 이것을 단일 인용부호 속에 넣게 되면 특
수 문자가 아니라 일반 문자로 해석하게 된다. 

 

 - \n  - 개행 문자(newline)
 - \r   - 개행 문자(carriage)
 - \t   - 탭 문자(horizontal tab)
 - \\   - \ 문자
 - \$  - $ 문자
 - \"   - " 문자

입력

$a = "\t AA";
$b = '\t AA';
echo("\$a = $a<br>
 \$b = $b"); 

 

출력

$a = AA
$b = \t AA

 

이렇게 동일한 문자열을 각각 단일 인용 부호와 이중 인용 부호로 지정한 다음 내용을 출력하면 $a는 'AA'라
고 출력 되지만 $b는 '\t AA'로 출력된다. 좀 더 정확한 내용을 확인하고 싶으면 페이지 소스를 확인하면 좀 
더 명확히 확인할 수 있다. 그리고 우리가 결과를 확인하는 화면은 브라우저 화면이므로 대부분의 특수 문자
는 무시된다. 이로 인해 '\n'이나 '\t'같은 특수 문자들은 사실상 무시된다.

 

입력

$a = TRUE;
$b = "TRUE";
echo("\$a = $a<br> // 1 출력
 \$b = $b"); // TRUE 출력

 

출력

$a = 1
// 1 출력 $b = TRUE

 

문자열은 지정하기 위해서는 반드시 인용 부호를 사용해야한다. PHP는 인용 부호 내에 문자열을 일반 문자열
로 인식하기 때문이다. 그러므로 인용 부호가 없는 $a의 TRUE는 문자열이 아니라 참과 거짓을 의미하는 불
린형 데이터로 판단하고, $b의 "TRUE"를 문자열로 판단한다

 

입력

$a = AAA; // $a = "AAA" 와 동일하다. $b = \tAA; // \는 단순 실수로 간주하고 경고 메시지를 보내지만 tAA는 유효하다. echo("\$a = $a<br>
 \$b = $b");

 

출력

Warning: Use of undefined constant AAA - assumed 'AAA' (this will throw an Error in a future version of PHP) in /home2/st09/html/221014/ex02.php on line 2
$a = AAA
$b =

 

EX) 자동 형 변환 : 1-1.php
1 :  <?
2 :  $var1 = "1";
3 :  $var1++;                                   // ASCII 49번에서 50번으로 1증가
4 :  $var2 = "a"; 
5 :  $var2++;                                   // ASCII 97번에서 98번으로 1증가
6 :  $var3 = 10 + "11";                    // 10 + 11 
7 :  $var4 = 10 + 1.2;                      // 10 + 1.2
8 :   $var5 = 10 + "1.1e2";               // 10 + 110(실수)
9 :   $var6 = 10 + "A11";                  // A11은 해석 못하므로 무시함
10 :   $var7 = 10 + "11A";                // 10 + 11 
11 :  echo("\$var1 = {$var1} <br>");
12 :   echo("\$var2 = {$var2} <br>");
13 :  echo("\$var3 = {$var3}<br>");
14 :  echo("\$var4 = {$var4}<br>");
15 :   echo("\$var5 = {$var5}<br>");
16 :   echo("\$var6 = {$var6}<br>");
17 :   echo("\$var7 = {$var7} <br>");
18 :  ?>

출력

Warning: A non-numeric value encountered in /home2/st09/html/221014/ex02.php on line 9
$var1 = 2
$var2 = b
$var3 = 21
$var4 = 11.2
$var5 = 120
$var6 = 10
$var7 = 21

 

산술 연산자

산술연산자는 가징 기본적인 수학 연산자로 더하기, 나누기, 곱하기 등의 연산을 수행한다. 

 

   10/3 -> 1

 - 10/3 -> 계산기로는 -1 실제로는 2           공개키 알고리즘에 필수

 

 

대입 연산자

대입 연산자는 우변의 값을 좌변에 대입하는 연산자를 의미한다. 보통 '='을 많이 이용하지만 PHP는 산술 연
산자를 이용한 더 다양한 대입연산자를 제공한다.

 

증감 연산자

 - 프로그램에서는 1증가하거나 1감소하는 순환문을 매우 많이 사용한다. 이들은 대입 연산자나 산술 연산자로 
    표현하기도 하지만 이런 특별한 연산을 위한 전용 연산자인 증감 연산자를 이용할 수도 있다. 

 

관계 연산자

 - 관계 연산자는 두 개의 값을 비교하는 연산자이다. PHP는 [표 6.8]과 같이 다양한 비교 연산자를 제공한다.

 

 

논리 연산자

 - 논리 연산은 피 연산자의 논리적인 연산을 수행하는 것으로 보통 비교 연산자와 같이 쓰인다. '!'(논리 부정)을 
   제외하고 모두 좌변과 우변의 논리 값을 연산한다.

입력

$a = TRUE;
$b = FALSE;
$c = $a && $b; // $c = FALSE 
$d = $a and $b; // $d = TRUE  -  and는 연산자 우선순위가 낮아서 $d = $a를 먼저계산할수도있기때문에 사용하면 안된다.
echo("\$a && \$b 는 {$c}입니다.<br>");           -  애매하거나 헷갈릴때 괄호로 정리(개념)해준다.  
echo("\$a and \$b 는 {$d}입니다.<br>"); 

 

출력

$a && $b 는 입니다.
$a and $b 는 1입니다.

 

문자열 연산자

입력

$a = "aa"."bb";
$b = 1 . 2;
$c = 1.2;
$d = aa.1; // Parse error: syntax error
echo("\$a는 {$a}입니다.<br>"); // aabb 출력 
echo("\$b는 {$b}입니다.<br>"); // 12 출력 
echo("\$c는 {$c}입니다.<br>"); // 1.2 출력 , 소숫점으로 인식된다. echo("\$d는 {$d}입니다.<br>"); // 에러

 

출력

Parse error: syntax error, unexpected '.1' (T_DNUMBER) in /home2/st09/html/221014/ex02.php on line 5

 

연결 연산자는 숫자의 소수점과 동일한 문자(".")를 사용함으로 숫자 타입의 데이터와 함께 쓸 때는 주의해야 한다. 숫자 타입의 데이터와 '.'을 사용하는 경우 둘 사이에 공백이 없으면 항상 소숫점으로 인식하기 때문에 '$d = aa.1'은 문법상의 오류로 인식된다. 이를 '$d = "aa" . 1'과 같이 쓰면 정상적인 연결 연산자로 인식된다. 연결 연산자로 연산되는 좌변과 우변이 문자라면 인용부호 사용여부에 관계없이 연산 과정에 문제가 없지만 양쪽에 숫자가 하나라도 있다면 반드시 숫자형 데이터 쪽에는 공백이 필요하다. 문자 연결을 위한 연결 연산자를 이용한다면 좌변과 우변에 변수를 쓰거나 인용부호를 사용하자. 비록 에러를 발생하지 않지만 '$d = "aa" . 1'이런 표현보다는 '$d = "aa"."1"' 이와 같이 표현하는 것이 올바른 표현이다.

 

연산자 우선순위

연산자를 두 개 이상 사용하는 경우 연산자 우선순위에 따라 연산 순서가 결정된다. 앞서 'and' 연산자의 예
처럼 이들 순서에 대해 잘 모르는 상태에서 코딩하게 되면 전혀 의외의 결과가 나오기도 한다. [표 6.11]은 
이들 연산자에 대한 운선 순위이다.

 

'PHP' 카테고리의 다른 글

PHP - PHP 와 오라클 연동 및 테이블 설정  (0) 2022.11.24
PHP - 배열  (0) 2022.11.11
PHP - 폼(form), 반복문  (0) 2022.11.04
PHP - 조건 연산자(If, Else, Switch)  (0) 2022.10.24
홈페이지 만들기  (0) 2022.10.18