&$HTTP_POST_VARS > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

&$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";
$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 변수는 같은 주소를 가리키기 때문입니다.
php에서 함수를 호출하면 기본적으로 call by value 입니다.(값이 복사되는거죠)

가끔 값이 아니라 객체(또는 배열) 그 자체를 넘기고, 수정해야 하는 경우가 있습니다.
이런 경우 call by refrence 형태로 넘겨야 하는데, & 를 쓰게 됩니다. 주소값을 넘기는거죠.
(이런 경우란 리턴값이 두개 이상인 경우입니다. php 함수에서 리턴값은 하나만 가능하죠. 두개 이상 수정해야 하는 경우에 쓰게 됩니다. 또는 변수의 사이즈가 큰 경우에 call by value 형태는 메모리를 낭비하게 되는데 이때도 사용합니다. )

$HTTP_POST_VARS 는 php.ini 에서 register_globar = on 한 경우에 활성화 되는 내장 변수입니다.
(쓰지 않는게 좋습니다. 그냥 $_POST 를 참조하는게 현명합니다.)
© SIRSOFT
현재 페이지 제일 처음으로