4. PHP 프로그래밍을 위한 준비작업 - 자료형, 변수(2)

안녕하세요? 프미케예요 벌써 5월의 중순이 되었네요. 날씨도 참 맑구 어그제 하구 오늘은 비도좀 왔긴하지만 그치구 나면 참 상쾌한거 같아요 저번 강좌 까지 해서 php에서 사용되는 자료형의 의미와 변수란 무엇인가 대해서 알아봤어요. 오늘은 이제 우리가 쓰는 그릇이 접시, 사발, 밥그릇 등등.. 있는것처럼 자료를 담는 그릇인 변수에도 용도에 따라서 종류가 있어요 그거하구 이제 난 처음에 숫자형으로 자룔를 선언했는데 문자형으로 처리해야할 경우가 생겨요 이렇게 되면 자료형을 변환해주어야 하거든요 이 두 개에 대해서 알아보도록 할께요.


변수의 종류는 전역변수, 지역변수, 정적변수, 유동변수로 나눌수가 있어요 이것들은의 의미를 알고 계시면 사용용도에따라서 편하게 사용하실 수 있을것이라 생각 네요

* 전역변수

전역 변수라는것은요 음.. 내가 만든 소스 전체에 영향을 끼지는 변수를 말해요 보통 자주쓰이는 초기 선언해놓고 전역변수로 사용하게 되죠 그냥 명령어들만 사용해서 간단하게 제작을 할경우에는 위에다가 코드 맨윗줄이 ‘$val=초기값’ 이라고 선언하고 쓴다면 그 페이지내에서 전역변수로 작용하겠죠 하지만 함수를 사용한 경우엔 좀 사용법이 틀리게 되요 함수는 이제 어떤 특정한 기능의 코드가 많아서 그냥 코드를 하나의 이름으로 대치시킨 것이거든요 일단 아래에서 예를 들어볼께요

예제 1)

<?

$val = "안녕하세요?“;

       ......

echo "$val“;

?>

위코드는 $val라는 변수에 “안녕하세요”라는 값을 넣은후 아래 echo "$val" 명령에의해서 브라우져에 안녕하세요? 라고 출력이 되어요 중간에 $val 라는 변수의 값을 바꾸지 않는이상 $val의 값으 항상 ”안녕하세요?“를 가지고 있게 되죠 그럼 다음 예제를 볼까요?

예제 2)

<?

$val = "안녕하세요?“;

function printhello()

{

global $val;

echo $val;

}

       ........

printhello();

?>

이것역시 예제 2와 같은 결과를 나타내요 근데 중간에 보면 function printhello() 라고 선언하고 제일 아랫줄에 함수명을 호출 해주면서 내부 코드를 실행해주게 하고 있어요 프로그램의 양이커지고 코드가 길어지면 함수가 매우유용하게 쓰이죠 반복 작업 같은 경우에 일일이 다 코드로 쳐넣지 않구 저렇게 함수로 처리해서 뒤에서 호출을 해서 타이핑 해야할 양을 줄이는 방법을 많이 써요 근데 함수안에서는 global $val라고 쓰여있군요 함수안에서 함수 외부의 변수를 불러올려면요 위에 처럼 ‘global 변수명’ 이렇게 사용해주셔야 하구요 위에 $val 처럼 코드 전체에 영향을 주는 변수를 전역변수 혹은 글로벌 변수라고 한답니다.

*지역 변수

지역 변수는 음 일정 코드의 일정 영역(지역)에 영향을 끼치는 변수를 말하고 있어요 일단 예제를 한본 볼까요?

<?

$val = "안녕하세요?“;

function printhello()

{

$val = “반갑습니다.”;

echo $val;

}

       ........

printhello();

?>

위의 예제는 형태가 전역변수의 예제와 비슷하네요 하지만 이것을 실행시키면 브라우져에는 반갑습니다. 라고 출력되어요 초기에 $val=“안녕하세요” 라고 선언을 했지만 함수 안의것을 보면 $val="반갑습니다.“라고 되어있지요 그럼 함수내의 $val은 함수 내에만 영향을 주게 되죠 이처럼 어떤 일정한 지역에 영향을 주는 변수를 지역변수라고 한답니다.


*정적변수

함수를 호출하면 변수는 초기화가 되거든요 그런데 정적 변수를 쓰게 되면 함수를 호출하게 되어도 그값은 초기화가 되지 않게 되어요  아래예제를 볼까요?

<?

function addstatic()

{

$val=1;                // 변수 $val 을 선언하고 값을 1로 초기화한다

echo "$val &nbsp;";   // $val 을 출력하고 한칸을 띄운다

$val = $val + 1;     //  $val 값에 1을 더한다.

}

addstatic();

addstatic();

addstatic();

?>

자 위의 addstatic 라는 함수가 있네요 위의 코드를 실행시키면요 결과는

1 1 1

이렇게 나오게 되어요 함수를 호출하게 되면 값이 초기화되어서 출력후 1을 더한 값이 초기화 되어버리기 때문에 계속 1일 출력되게되죠

<?

function addstatic()

{

static $val=1;                // 변수 $val 을 선언하고 값을 1로 초기화한다

echo "$val &nbsp;";   // $val 을 출력하고 한칸을 띄운다

$val = $val + 1;     //  $val 값에 1을 더한다.

}

addstatic();

addstatic();

addstatic();

?>

하지만 위에 처럼 변수 앞에 static를 붙여주게 되면요 위의 결과 소스 결과는요

1 2 3

이렇게 나와요 이것처럼 쓰이는 것을 정적 변수라고 한답니다.


*유동변수

이제 유동변수에 대해서 알아볼 차례예요 음 일단 유동변수는 제 생각에는 실제로 코드 작성을할 때 많이 쓰이지를 않는 것 같아요 또 유동변수를 이용해서 코드를 작성할 때 잘못하면 찾기 힘든 악성버그를 만들어내기도 쉬워서 이런 이유로 잘 사용하지는 않지만 한번 알아보기로 해요 일단 예제를 들어서 설명해 드릴께요

<?

$morning = “안녕하세요”;  //$morning 값을 ‘안녕하세요’라고 선언한다

$bow = "morning";        //$bow 값을 ‘morning’라고 선언한다

$var = $bow;             //$var 값을 $bow값 과 같다고 선언한다.

echo $$var;              //$var의 값을 변수로 변환하어 출력한다.

?>

위의 코드를 실행 하면 ‘안녕하세요?’ 가 출력되어요?  일단 $morning 의값은  안녕하세요 라고 선언했네요  $bow의 값은 morning이 되겠지요? 그럼 $var의 값은 과 $bow의 값이 같으니 $bow의 값은 morning가 되겠죠? 여기서 중요한것이 출력문인 echo 뒤에 $$var;이라고 써있어요 변수는 $[변수명]이렇게 쓴다고 했었는데 여기에서는 $$[변수명]이 쓰였군요 이것의 의미는요 앞의 설명으로보면 $var = "morning"와 같다고 설명했어요 근데 $$var = $morning 변수명앞에 $을 두 개 붙이면 앞에처럼 되어요 그렇게 때문요 $morning 의 값인 ‘안녕하세요’가 출력되는 것이구요 이처럼 변수의 해당값을 다시 변수로 바꾸어서 사용하는 것을 유동변수라고 한답니다.

이렇게 해서 변수에 대해서 알아보았어요. 이제 자료형 변환에 대해서 알아볼 차례네요 앞에서 자료의 형태는요 정수형 실수형 문자열 자료가 있었어요 필요해 의해서 숫자 자료를 문자료 변환해주어야 할때도 있구 컴퓨터에서 처리하는 문자 역시 숫자로 된 값으로 이루어져있어요 이렇기 때문에 문자를 숫자로 변환해야하는 필요성이 생기게 되요

그럼 예제를 하나 들어볼께요 자료형을 바꾸기위해서는 자료형을 바꾸기 위한 연산자가 필요해요 연산자는 아래와 같아요

(int), (integer) 정수형

(float), (double), (real) 실수형

(string) 문자열

이렇게 되구요 예제를 하나 들어보기로 할께요

<?

$val = 25.245;    //$val의 값을 24.245라고 선언

$val_int = (int)$val; //$$val_int의 값을 정수로 변환된 $val값을 선언

$val_float = (float)$val; //$$val_float 의 값을 실수로 변환된 $val값을 선언

$val_str = (string)$val; //$$val_str 의 값을 문자열 변환된 $val값을 선언

echo "$val_int &nbsp; ,"; //$val_int의 값을 출력하고 , 출력후 한칸띄움

echo "$val_float &nbsp; ,"; //$val_float의 값을 출력하고 , 출력후 한칸띄움

echo "$val_str";  //$val_str의 값을 출력

?>

위 코드의 값은 25 , 25.245 , 25.245 가 나오게 되죠 맨처음에 25가 나온이유는요 실수형 자료를 정수형으로 변환하였기 때문에 소숫점 이하는 출력이 되지 않게 되요 그리고 두 번째 24.245는 실수 형으로 변환 하여 출력한 것 이라 원래 값이 그대로 나온 것 이예요. 그리고 마지막의 24.245는 값은 처름과 같지만 이것은 문자열 처리되서 출력된 값을 말하는것이예요 두 번째 것과는 의미가 약간 다르게 되죠 이렇게 필요에따라서 자료형 연산자를 사용해서 자료의 형태를 바꿀수가 있어요.

이렇게 해서 벌써 php 프로그램을 하기 준비가 점점 되어가고 있어요 여기까지 읽느라고 수고하셨구요 의문점이나 기타 문의사항이 있으시면 댓글 남겨주시면 확인 되는대로 답변 해드릴께요 그럼 다들 좋은 하루 되세요 ~ 파이팅~!! ^^v  -2007.05.22 프미케-

+ Recent posts