2009-02-28 5 views
18

쉽고 빠른 질문입니다. 나는 PHP에 익숙하지 않고 기존의 코드를보고있다. 나는 google에 나의 질문에 응답을 찾아내는 것을 시도하고, 그러나 아무 소용이 없다.매개 변수 이름 앞에 '&'를 붙입니다.

매개 변수 $ var 앞에 '&'기호가 무엇인지 알려 주실 수 있습니까?

function setdefault(&$var, $default="") 
{ 
    if (! isset($var)) 
    { 
    $var = $default; 
    } 
} 

답변

46

참조로 전달하십시오.

허? 참조로 전달한다는 것은 값 대신 변수의 주소를 전달한다는 의미입니다. 기본적으로 변수에 대한 포인터를 만들고 있습니다.

http://us.php.net/language.references.pass

+6

+1 ** ** 허 ** **, 나를 껄끄럽게 만들었습니다. –

1

& 패스 수단에 의해 참조; 이 코드가하는 일은 함수에 전달 된 변수가 실제로 전역 범위에 존재하는지 확인하는 것입니다. &이 없으면 먼저 변수의 복사본을 가져 오려고합니다. 존재하지 않으면 오류가 발생합니다.

19

이는 함수가 값의 복사본 대신에 $var 인수의 원래 값을 참조한다는 것을 의미합니다.

예 :

function add(&$num) { $num++; } 

$number = 0; 
add($number); 
echo $number; // this outputs "1" 

add() 경우는 함수 서명에 앰퍼샌드 서명이없는 것, 에코는 출력이 "0"원래 값은 변경되지 않았다, 때문에.

2

이는 참조 번호 http://ca3.php.net/language.references.pass으로 변수를 전달한다는 것을 의미합니다. 간단히 말해서 함수가 변수의 복사본이 아니라 실제 변수를 가져 오는 것을 의미합니다. 함수의 해당 변수에 대한 모든 변경 사항은 호출자에서 미러링됩니다.