shop-wiz logo
Follow Us on Facebook Follow Us on Google+ Follow Us on Twitter Follow Us on LinkedIn


변수 이야기


변수란 무엇인가? 이미 중고등학교를 거치면서 x=2, y=3, x * y = 6 이라는 것을 쉽게 이해할 수 있을 것입니다. 이와 같이 x, y와 같은 것이 변수 입니다. 수라고 하는 것은 1, 2, 3... 과 같이 아라비아 숫자로 생각되지만 x, y 처럼 아라비아 숫자가 아닌 것을 변수라 합니다.
변수는 컵과 같은 존재로 컵속에 무엇이 들어가느냐에 따라 그 컵의 이름이 조금은 변하겠져? 우유컵, 물컵, 맥주컵 처럼...



변수의 data type(형)

정수형(integer) : $a = 10;
실수형(double) : $b = 0.01; , $b = 25.25E+02(지수 표현)
문자열(string) : $c = "shopwiz";



변수의 종류
전역변수: 특정 영역(함수)에 제한 받지 않고 사용할 수 있는 변수
지역변수: 특정 영역에서만 사용할 수 있는 변수
정적변수: 변수의 값을 초기화 할 수 없는 변수
유동변수: 변수의 값을 변수로 선언하는 변수

[전역변수와 지역변수]

<?
	$local = 1; // $local 변수는 지역변수(특정 지역에서만 사용됨) 
	$global = 1;
	function sample_fnc() { 
	global $global; // sample_fnc() 함수 영역 $global 
	변수를 전역 변수로 선언 
	$local = $local + 3;
	$global = $global + 3;
	echo "함수내 결과 <br>";
	echo "global = ".$global."<br>"; 
	
	echo "local = ".$local."<br>"; 
	
	}
	
	sample_fnc ();

echo "sample_fnc 밖의 결과값 <br>"; echo "global = ".$global."<br>"; echo "local = ".$local."<br>"; ?>

결과보기

예상대로 값이 나왔나요? 함수안에서 global 이라 정의된 변수는 함수밖과 함수 안에서 동일한 변수로 사용되지만 그렇지 않은경우($local)는 함수내와 함수 밖의 변수가 보이기는 동일하지만 실제특성은 다르게 정의됩니다.

[정적변수]

<?
function sample_fnc() {
static $a = 1; // $a가 정적변수로 선언됨(초기값에 영향 받지 않음)
$b =1; 
echo "a = $a <br>";
echo "b = $b <br>";
$a++;
$b++;
}
sample_fnc();
sample_fnc();
?>

결과보기

[유동변수]

<?
$var1 = "apple";
$$var1="juice"; // $var1 변수의 값인 apple를 
변수로 선언하여 juice 문자열을 초기화 시킴.
echo("$var1 <br>");
echo("$apple <br>");
?>

결과보기



변수의 형 변환


변수의 형 변환이란 변수의 data type을 변경하는 기능으로 예를 들면 실수형을 정수형으로 변환하는
것을 의미합니다.

[변수의 변환 형식]

(data type) $변수명 예)) (int)$dou

형 변환 연산자의 종류
(int) : 정수로 변환
(float) , (double) : 실수로 변환
(string) : 문자열로 변환
(array) : 배열로 변환

<?
$var1 = 10.5;
$type1 = gettype($var1);
echo("var1($var1) 변수의 데이터 타입은 $형 입니다.<br>");
$var2 = (int)$var1; // 정수로 강제 형 변환
$type2=gettype($var2);
echo("var2($var2) 변수의 데이터 타입은 $형 입니다.<br>");
?> 

결과보기


[설명]
다양한 변수들의 예제와 활용방법이 위에 보입니다.
여기서는 echo 문과 관련된 몇가지 예제를 보여드리겠습니다.
echo("var1($var1) 변수의 데이터 타입은 $형 입니다.<br>"); 이런 예제가 있는데 {}부분에 대해 궁금하실 거라 여겨집니다.
교과서적인 코딩은
echo("var1($var1) 변수의 데이터 타입은 ".$type1."형 입니다.<br>"); 입니다. 물론
echo "var1($var1) 변수의 데이터 타입은 ".$type1."형 입니다.<br>"; 처럼 괄호를 생략하셔도 됩니다.
또는
echo "var1($var1) 변수의 데이터 타입은 $type1 형 입니다.<br>"; //true
echo "var1($var1) 변수의 데이터 타입은 $type1형 입니다.<br>"; //false
처럼 사용할 수 있는데 위의것은 $type1 의 값이 출력되지만 아래의 것은 출력되지 않습니다.
이유는 $type1형 까지 변수가 되기 때문입니다. 다른 얘기로 php의 변수는 한글도 먹는다는 것입니다.
$사랑 = "걍 마음이 뜨뜨지근 한 것";
echo $사랑; 이라고 하면 값이 출력되져..


이런것을 막기위해 변수부분을 {}로 둘러쌈으로서 확실히 변수의 구역을 알려줍니다. 아래의 두가지는 옳은 예입니다.
echo("var1($var1) 변수의 데이터 타입은 $형 입니다.<br>");
echo("var1($var1) 변수의 데이터 타입은 {$type1}형 입니다.<br>");

그런데 var1($var1) 에서 ")"은 왜 변수로 취급되지 않고 정확한 출력이 나올까? ㅋㅎㅎㅎ... 변수에서 특수문자, blank등은 사용불가입니다. 즉, php는 변수를 인지할때 이런 특수문자나 blank앞까지를 변수로 인지 합니다.


Powered by shop-wiz since 2002, e-mail:wangta69@naver.com