&$HTTP_POST_VARS 정보
&$HTTP_POST_VARS
본문
&$HTTP_POST_VARS
이렇게 되어 있는데 저것은 변수인가요?
뭔가요?
& 이것이 왜 붙은거죠?
이렇게 되어 있는데 저것은 변수인가요?
뭔가요?
& 이것이 왜 붙은거죠?
댓글 전체
$HTTP_POST_VARS 는 php 구버젼에서 사용하던 예약변수랍니다.
가능하면 $_POST 변수를 사용하는 게 좋답니다.
&$_POST 의 &는 주소를 지칭합니다.
예를 들어
$val=$_POST; // $_POST의 값을 $val 변수에 할당한다. 즉 값을 복사.
$val=&$_POST; // $_POST의 값이 가리키는 주소값을 $val 변수에 할당한다. 즉 값을 직접 가리킴.
가능하면 $_POST 변수를 사용하는 게 좋답니다.
&$_POST 의 &는 주소를 지칭합니다.
예를 들어
$val=$_POST; // $_POST의 값을 $val 변수에 할당한다. 즉 값을 복사.
$val=&$_POST; // $_POST의 값이 가리키는 주소값을 $val 변수에 할당한다. 즉 값을 직접 가리킴.
$post = "post";
$var = &$post;
echo $var;
$post = "post";
$var = $post;
echo $var;
위 두가지의 경우처럼 하면 뭐가 다른건가요?
몰 가르키고 할당하겠는건 알겠는데 뭐가 틀린지 실질적으로 모르겠어요 ^^;
좀더 자세한 예제 있으면 부탁드립니다.
$var = &$post;
echo $var;
$post = "post";
$var = $post;
echo $var;
위 두가지의 경우처럼 하면 뭐가 다른건가요?
몰 가르키고 할당하겠는건 알겠는데 뭐가 틀린지 실질적으로 모르겠어요 ^^;
좀더 자세한 예제 있으면 부탁드립니다.
===============
$post = "post";
$var = &$post;
================
post와 var는 "post" 라는 문자열 값을 가지게 됩니다.
그런데 var에 "var"라는 문자열 값을 저장하면 post는 어떻게 될까요?
============
$post = "post";
$var = &$post;
$var = "var";
============
var와 post 둘 다 "var" 라는 문자열 값을 가지게 됩니다.
var와 post 변수는 같은 주소를 가리키기 때문입니다.
$post = "post";
$var = &$post;
================
post와 var는 "post" 라는 문자열 값을 가지게 됩니다.
그런데 var에 "var"라는 문자열 값을 저장하면 post는 어떻게 될까요?
============
$post = "post";
$var = &$post;
$var = "var";
============
var와 post 둘 다 "var" 라는 문자열 값을 가지게 됩니다.
var와 post 변수는 같은 주소를 가리키기 때문입니다.
php에서 함수를 호출하면 기본적으로 call by value 입니다.(값이 복사되는거죠)
가끔 값이 아니라 객체(또는 배열) 그 자체를 넘기고, 수정해야 하는 경우가 있습니다.
이런 경우 call by refrence 형태로 넘겨야 하는데, & 를 쓰게 됩니다. 주소값을 넘기는거죠.
(이런 경우란 리턴값이 두개 이상인 경우입니다. php 함수에서 리턴값은 하나만 가능하죠. 두개 이상 수정해야 하는 경우에 쓰게 됩니다. 또는 변수의 사이즈가 큰 경우에 call by value 형태는 메모리를 낭비하게 되는데 이때도 사용합니다. )
$HTTP_POST_VARS 는 php.ini 에서 register_globar = on 한 경우에 활성화 되는 내장 변수입니다.
(쓰지 않는게 좋습니다. 그냥 $_POST 를 참조하는게 현명합니다.)
가끔 값이 아니라 객체(또는 배열) 그 자체를 넘기고, 수정해야 하는 경우가 있습니다.
이런 경우 call by refrence 형태로 넘겨야 하는데, & 를 쓰게 됩니다. 주소값을 넘기는거죠.
(이런 경우란 리턴값이 두개 이상인 경우입니다. php 함수에서 리턴값은 하나만 가능하죠. 두개 이상 수정해야 하는 경우에 쓰게 됩니다. 또는 변수의 사이즈가 큰 경우에 call by value 형태는 메모리를 낭비하게 되는데 이때도 사용합니다. )
$HTTP_POST_VARS 는 php.ini 에서 register_globar = on 한 경우에 활성화 되는 내장 변수입니다.
(쓰지 않는게 좋습니다. 그냥 $_POST 를 참조하는게 현명합니다.)
답변 주신 모든분께 감사합니다. ^^;