웹마스터 팁

PHP 익히기 2

2003.06.10 02:07

구리구리

레벨2에 도전한다. PHP익히기 2입니다.

우선 익히기 1에서 나간 가벼운 문제 기억하시나요?

<?
echo ("안녕하세요? php스크립트 1번놈입니다.<br>");
echo ("안녕하세요? php스크립트 2번놈이지라요. <br>");
echo ("안녕하셔와요? 지는 php스크립트 3번놈입니다요.");
?>

이건 어떻게 출력 될까요?

답.
안녕하세요? php스크립트 1번놈입니다.
안녕하세요? php스크립트 2번놈이지라요.
안녕하셔와요? 지는 php스크립트 3번놈입니다요.

이대로 출력되겠죠? 만약 아니라고 생각하셨던분은 다시 익히기 1를 읽으세요. 강요!

자 익히기2에서는 뭘할껀가???
익히기2에는 조금 레벨이 높은 녀석들이 등장하는데 여러분 바짝 긴장들 하세요.


익히기 1에서는 우리가 변수에 대해 알아 보았었죠?
변수를 알았으니 다른녀석들도 알아 볼까요??

1. 변수타입을 알아보자.
익히기 1에서 배운것 처럼 변수에는 정수형,실수형,문자열,배열,객체등이 있었는데요.
실제로는 어떻게 사용되느냐겠죠?

우선 타입에 대해 알아 보자구요.

정수형 - (int),(integer)
실수형 - (double),(real),(flot)
문자열 - (string)
배  열 - (array)
객  체 - (object)

왜!! 대체 왜 저런녀석들을 내가 사용해야 하나? 궁금하시죠? 저도 궁금합니다.
자 왜 사용할까요?
가볍게 예를 사용해 보겠습니다.
$a = 350.13 이라고 가정합시다.
보시면 아시겠지만 실수형이죠?? 근데 저는 출력할때 정수형으로 바꾸고 싶은거예요!
350만 출력하게는 못할까? 바로 그래서 저런녀석들이 등장을 한거랍니다.

자 예를 들어 볼께요.
<?
        $var_a=350.13;
        $type=gettype($var_a);
        echo ("실수형 var_a의 값은 $var_a 이고 변수형은 $type형 입니다<br>");
?>
가볍게 이렇게 보자구요.
대부분 여러분들이 익히기 1을 보셨다면 이런 답을 원하셨을겁니다.
- 실수형 var_a의 값은 350.13이고 변수형은 double형입니다.

하지만 실제로 보면
- 실수형 var_a의 값은 350.13이고 변수형은 형입니다.
라고 나온다 말입니다. 웃기죠 저도 참 웃기더군요.

자 세밀하게 집고 넘어가자구요

$var_a의 값은 350.13입니다 역시 실수형(double) 맞습니다. 맞구요.
$type=gettype($var_a); 새로운 녀석이 등장했습니다. 저녀석은 뭐하는 놈이래?
자 알아 볼까요 gettype <--- 변수의 형식을 알아 보는 놈이라 생각하시면 될것 같아요
$type는 gettype(형식을 알아보자) ($var_a)($var_a에 대한 형식을)

그럼 이해가 되시겟죠?
근데 분명이 저는 위에 echo중에 변수형은 $type형입니다. 라고 넣었으면 double가 나와야 하지
않을까요???? 이따 힘드어지는군요. 저도 힘들어집니다.
자 왜 그럴까요?
그건 바로 문자열과 변수이름 때문이라네요. 변수이름 type와 일반 문자열을 구분하기 위해서
{}이걸 사용한다구 하네요. 그럼 답은 나오겠죠?
만약에 $type형과 같이 부분하지 않고 붙여서 사용을 하면 "$type형"을 하나의 변수로 인식하게 되어서
아무런 값도 나오지 않는겁니다 왜냐??? $type형 = gettype($var_a); 라는게 없죠?

결국 변수형은 $type형 입니다.에서 $type으로 인식하는게 아니라 $type형 으로 인식하는거죠.
그래서 그걸 방지하기 위해서 {$type}형 입니다 라고 해주는 거라는군요

<?
        $var_a=350.13;
        $type=gettype($var_a);
        echo ("var_a의 값은 $var_a 이고 변수형은 $type형 입니다<br>");
?>
위에 내용을

<?
        $var_a=350.13;
        $type=gettype($var_a);
        echo ("var_a의 값은 $var_a 이고 변수형은 {$type}형 입니다<br>");
?>
바꿔주면 될것 같습니다.
자 변수의 형식이 나오죠?? 직접 해보세요.

다른 문장으로 더 알아보자구요

<?
        $var_a=350.13;
        $var_a=(int)$var_a;   // 새로운 녀석 등장.
        $type=gettype($var_a);
        echo ("var_a의 값은 $var_a 이고 변수형은 {$type}형입니다<br>");
?>
여러분 위에걸 보고 생각해 보세요 결과물을..
만약 php익히기를 막 따라 하신 분들은 이런 결과를 얻으실수 있을꺼예욤
-실수형 var_a의 값은 350.13이고 변수형은 double형입니다.

하지만 새로운 녀석이 중간에서 뭔가 꿍꿍이로 작업을 했다는 겁니다.
자 알아 볼까요 뭔 짓꺼리를 했나?
$var_a=(int)$var_a;  
$var_a는 (int) <-- 정수형 $var_a를
잘 이해가 안가시죠? 이해가 가셨다면 이해가신분은 다른 세계에 살고 계십니다.?
2003년인데 이해가 가버렸으니 2004년도에 사시겠군요 -_ㅡ;;

자 잡담은 넘어가고 위에를 보시면 아시겟지만 $var_a=350.13 입니다 실수형이죠
다 머리 좋으신 분들은 이해가 되셨을 겁니다.

$var_a=(int)$var_a  <-- 이말은 $var_a의 값을 정수로 바꿔라라고 생각하셔도 됩니다.
따라서 결과물은 실수형 var_a의 값은 350이고 변수형은 integer형입니다.
라고 나오겠죠.

근데 여기서 잠깐!
var_a의 값은 350.13아닙니까?라구 물으시는 분이 계시겠죠? 네 맞습니다 350.13입니다.
하지만 var_a=350.13아래에 다시 $var_a=(int)... 넣어졌습니다 따라서 var_a=350.13을 인식
하는게 아니라 $var_a=(int)$var_a 위에 $var_a값 350.13을 인식하게 되는거죠.
예를 더 들어 보겠습니다.

<?
        $var_a=350.13;   //임의로 이녀석을 var_a 1번놈
        $var_a=(int)$var_a;   // 이녀석을 var_a 2번놈
        $var_a=99999;        //이녀석을 var_a 3번놈
        $type=gettype($var_a);
        echo ("var_a의 값은 $var_a 이고 변수형은 {$type}형입니다<br>");
?>
이렇게 하면 실수형은 var_a의 값은 99999(3번놈)이고 변수형은 integer형입니다. 라고 나오겠죠?
이해가 되셨는지요?
이해가 안가신다구요 계속 이해가 가실때까지 하세요 이해가 안가시면 아래의 글을 읽지 마시고
이해가 가실때 까지 반복해 주세요.

자 우리 다른 변환을 배워 볼까요?
<?
        $var_a=350.13;  
        settype($var_a,"int"); // settype라는 새로운 녀석 등장
        $type=gettype($var_a);
        echo ("var_a의 값은 $var_a이고 변수형은 {$type}형입니다<br>");
?>
가볍게 설명할께요. settype () 함수를 이용해 달리 표현하는 것인데요 $var_a를 integer(정수)형으로
형변환을 한다 이런것이랍니다.

결국 settype($var_a,"double"); 이것과 $var_a=(double)$var_a; 과 같다고 생각하시고 넘어갈께요
위에 내용의 핵심은 위에 내용과 같이 형변환이나 settype()의 함수를 이용해서 프로그래머가 강제적으로 원
하는 변수의 변수형을 결정할수 있다는 겁니다.

자 여기서 문제 나갑니다.
만약 $a=99534.492일때 출력물을
a의 값은 99534이고 변수형은 integer형입니다.

라고 나오게 하고 싶습니다.
답은 익히기 3에서 알려 드리겠습니다.

자 새로 등장한 녀석들 별거 아니죠?? 내 허접들입니다 이글을 읽는 님이 더욱 레벨이 높군요.
자 익히기 2를 끝내겠습니다.

왜 더 나가지 않느냐라는 질문을 더지시겠지만 제가 시간이 없어서 그런게 아닙니다.

하나 하나 익혀 나가는게 중요함으로 하나를 완벽히 끝내주시기 바랍니다.

지금까지 잘 따라 오신분은 레벨2입니다.