HTML2011. 5. 11. 20:46

http://www.cola.co.kr/tattertools?page=3



이전 강좌에서 변수를 만드는 방법과 폼구문에서 데이터를 넘겨 받는 과정에 대해서
공부하였습니다. 이번 강좌에서는 변수, 상수 및 이들의 데이터형에 대해서 공부해
보도록 하겠습니다.

자 시작해 볼까요. 그럼!!

  프로그램과정을 통해서 데이터 값을 변환할 수 있는 수는 변수(Variable)이고
변환되지 않고 고정된 값을 가지는 수는 상수(constant) 입니다. 데이터형(type)은
데이터의 종류를 말하는 것입니다.

  자 그럼 데이터형부터 상세히 공부해 보도록 하죠.
데이터의 종류에는 어떤 것들이 있을까요.

일반형으로

정수형(interger)
실수(double)
문자열(string)


특수형으로

배열(array)
개체(object)


가 있습니다.


그럼 하나씩 살펴보도록 하죠.

  정수는 수학시간에 알고 있는 정수하고 비슷합니다. 수학시간에 배운 정수는
자연수, 0, 음의 자연수를 말하지만 PHP 에서는 +20억~_20억의 10 진수를 말하며
4 byte의 메모리를 차지합니다.

  실수도 수학시간에 배운 실수라고 생각하시면 됩니다. 허나 PHP 에서는
지수(2.2e3)나 10진수가 아닌수(1010:2진수), 소수(1.0)를 말하는 것입니다.

  문자열은 문자, 숫자, 기호 등과 같이 값이 있는 숫자가 아닌 모든 데이터를
말하는 것 입니다. "숫자가 왜 문자열인가?" 라는 의문이 생기죠.
아래의 예를 보도록 하세요.

5            5.0                      "100"
0    정수    1101(2진수)    실수      "lactuca"  문자열
-5            1.2e3(지수)              "2001년"

숫자라도 문자열의 예에서와 같이 "" 로 둘러 구분하여 문자열 표시를 하게되면
정수가 아니라 문자열이 되는 것입니다.

그리고 PHP 에서는 변수를 쓸때 그 데이터형을 지정하지 않아도 문제가 없으며
변수는 그때 그때 형을 바꾸어 가며 변경될 수 있습니다. PHP 에서 논리값인
참(true), 거짓(false)의 값을 리턴할때 참은 1 의 값을 가지고 거짓이고 0 의
값을 가지게 됩니다. 또한 정수 0, 실수 0.000...(소숫점 이하로 0이 몇개든지
상관없다. 어쨋든 0 이니까), 문자열 ""(빈문자열)은 모두 거짓이 됩니다.

  이번에는 상수에 대해서 좀더 상세히 알아 보도록 하겠습니다. 예를들어
lactucaguestbook 라는 프로그램이 있다고 합시다. 프로그램에 관한 정보가
아래와 같다고 하면

프로그램 명:Lactucaguestbook
프로그램 버전:V1.0
만든날짜:2001.1
만든이:Lactuca
라이센스:GNU (GPL)

이러한 정보를 필요할때 마다 손으로 넣을 경우 어려운 일은 아니지만
귀찮은 일은 될것입니다. 물론 파일로 만들어 두었다가 붙여넣기를
할수도 있지만 프로그램을 배우는 것이니 프로그램으로 해결하는 것이
좋겠죠. 그래서 상수로 정해놓고 그때 그때 불러서 쓰는 것을 권해드립
니다.


  그럼 상수를 어떻게 쓰는지 세부적으로 알아 볼까요.


<HTML>
    <!----constant.php3----->
    <BODY>
        <?
        define("pro_n","Lactucaguestbook");
        define("pro_v","V1.0");
        define("pro_d","2001.1");
        define("pro_a","Lactuca");
        define("pro_l","GNU (GPL)");
        ?>


//위의 예제에서 보듯이 define() 이라는 명령어로 정의를 내립니다.
형식은 define(상수이름,상수내용) 으로하면 됩니다.
실제로 이러한 상수를 불러 echo 문에서 써 볼까요.


본 프로그램은 <? echo(pro_a); ?>님이 <? echo(pro_d); ?> 에 만든 <? echo(pro_l); ?> 을
따르는 <? echo(pro_n); ?><? echo(pro_v); ?> 입니다

    </BODY>
</HTML>


라고 편집기에 입력하고 브라우저로 보면

본 프로그램은 Lactuca 님이 2001.1 에 만든 GNU (GPL)을 따르는
Lactucaguestbook V1.0 입니다


라고 출력될것 입니다.

이러한 경우 이외에도 색깔이나 디비연결을 위한 내용, 탈출기호 등
자주 사용하는 내용을 상수로 지정해서 쓴다면 코딩시에 편의를 도모할 수
있을것 입니다.
참고로 상수는 $(달라)를 앞에 붙이지 않아도 됩니다.

  PHP 에는 이미 지정된 상수가 몇개 있습니다. 알아두시면 써먹을때가 있을
것이니 참고로 알아두세요.

phpinfo()            설치된 php 의 설치 및 설정 상태를 보여줌
php_versinon()            설치된 php 버전을 보여줌


이중에 phpinfo() 라는 상수를 한번 실제로 실행시켜 볼까요.


<HTML>
<!----------phpinfo.php3-->
    <BODY>
        <?
            phpinfo();
        ?>
    </BODY>
</HTML>


라고 편집기에 넣고 브라우저에서 실행시켜 보세요.
그럼 설치된 PHP 의 설치 및 설정 정보에 관한 정보가 좌~악 나올 것입니다.


  자 이번에는 문자열 변환(string conversion)과 형변환(type casting)에
대해서 알아볼까요.

문자열 변환은 문자열을 숫자(정수, 실수)로 평가하는 것을 말합니다.

<?
$a="2001년 새천년입니다";
$b=$a + 6;

echo($b);
echo($a);
?>

$b 는 2001년 새천년입니다  라고 출력되고
$a 는 2007  이 출력될 것 입니다.

문자열이 문자열 변환을 통해서 연산에 쓰이면 문자열 첫 시작 부분의 숫자만
숫자로 인식되며 "10.1", "-1.1", "2.2e3"과 같은 실수로만 구성된 문자열은
10, -1, 2 와 같이 정수로만 인식됩니다.


형변환은 말 그데로 데이터의 형을 변환하는 것입니다. 아래의 예를 보세요.

<?
$a=5.4;            //실수 5.4
$a=(int)$a;        //정수 5
$a=(double)$a;        //실수 5.0
$b=(string)$a;        //문자열 5
?>

$a 가 형변환을 통해서 여러가지 데이터형으로 변환되는 과정입니다.
(int) 와 같은 것은 데이터의 형을 지정하는 명령입니다.

이것 이외에도 형조작(type juggling) 이라는 것도 있습니다. 형조작은
데이터 형태를 조작하는 것인데 변수의 형태에 따라 자동적으로 지정되지만
위의 경우처럼 인위적으로 지정할 수도 있습니다.


  마지막으로 변수에 관련된 몇가지 함수의 기능과 사용법에 대하여 공부해
봅시다.
gettype(), settype(), isset(), unset(), empty(), is_(), _val() 등이 대표적인
변수관련 함수입니다.

하나 하나씩 자세히 알아 볼까요.

# gettype()
변수의 데이터형 값을 나타내주는 함수 입니다.

<?
$a=1234;
$b="lactuca";
echo(gettype($a));    //interger(정수) 라고 출력
echo(gettype($b));    //string(문자열) 이라고 출력
?>

interger(정수), double(실수), string(문자열), array(배열), objedt(개체),
class(클레스), unknowen type 이 gettype() 함수 사용시 값으로 나타날
것 입니다.


#settype
변수의 형을 지정하는 함수 입니다.
형이 이미 지정되어 있으면 true(참) 이고 아니면 false(거짓) 입니다.
참이면 1 을 거짓이면 0 이라는 결과값을 가질것 입니다.(리턴합니다)

<?
$a=7.5;                //$a 는 실수 7.5
settype($a,"interger");        //$a 는 정수 7
echo($a);            //7 을 출력함
?>

#isset() 과 unset()
isset() 은 변수 값이 있는지 유무를 검사하는 함수입니다. 변수값이 있으면 1(true)을
없으면 0(false)를 리턴할 것입니다. unset() 은 변수값을 지워버리는 함수 입니다.

<?
$a="";
$b=1234;
echo(isset($a));        //0 을 리턴
echo(isset($b));        //1 을 리턴
echo(unset($a));
echo(unset($b));        //0 을 리턴
?>

#empty()
isset() 과 반대로 변수 값이 없으면 1(true) 변수값이 있으면 0(false)를 리턴하는
함수 입니다.

<?
$a="";
$b=1234;
echo(empty($a));        //1 을 리턴
echo(empty($b));        //0 을 리턴
?>

그럼 $c=0 은 empty() 함수를 쓰면 어떤 값을 리턴할까요?

직접한번 해보세요. 아마 0 을 가질 것입니다. 0 이나 빈문자열을 변수 값으로
가질때는 1(true) 을 리턴할 것입니다. 0도 변수가 있는 것이라고 생각 될실
것이지만 실제로 써보면 변수값이 없는 것과 같은 값인 0이 리턴될 것입니다.


#is_()
변수가 어떤 형태인지 그 값을 리턴 하는 함수 입니다.

is_int()
is_interger()
is_long()   

변수가 정수인지 아닌지 그 값을 평가후 리턴

is_double()
is_float()
is_real()
변수가 실수인지 아닌지 그값을 평가후 리턴

is_string()
문자열인지 평가후 리턴

is_array()
배열인지 평가후 리턴

is_object()
개체인지 평가후에 리턴하는 함수 입니다.

<?
$a=7;
$b="lactuca";

echo(is_int($a));        //1 을 리턴
echo(is_int($b));        //0 을 리턴
echo(is_string($a));        //0 을 리턴
echo(is_string($b));        //1 을 리턴
?>

#_val()
변수의 데이터형을 지정하여 그값을 구하는 함수 입니다.
intval()    변수의 값을 정수화하여 그값을 구함
doublebal()    변수의 값을 실수화 하여 그값을 구함
strval()    변수의 값을 문자열화 하여 그값을 구함

<?
$a="2001년 새천년";
$b=intval($a);
echo($b);        //2001 출력
?>

이정도로 변수, 상수 및 데이터형에 대한 강좌를 마칠까 합니다.
다음 강좌는 연산에 대한 내용을 다룰 것입니다.
그리고 연산, 구문에 대한 강좌가 끝난 다음에 데이터 베이스에관한
공부를 조금하고 직접 프로그램을 만들어 가면서 강좌를 진행 할까
하는데 여러 초보분들의 의견이 어떤지 궁금하군요.
이 강좌를 보는 초보분들은 강좌 내용에 대한 궁금증이나 강좌로 다루어
주었으면 하는 내용들을 게시판에 올려 주시면 반영하도록 하겠습니다.
그리고 고수님께서 혹시나 이강좌를 보았다면 한번 훌터 보시구 잘못된
부분이 있는지 보고 있는 경우에 수정내용을 게시판에 올려 주시거나
이메일로 보내 주시면 감사드리겠습니다.
(출처 : http://www.joinpartner.com 조인파트너)

Posted by 아이맥스