2009-06-16 6 views
4

필자는 원저자가 원래 코드를 작성한 PHP 함수 및 변수를 많이 사용하여 작성하고 사용 했으므로 제품 개발을 계속해야했습니다. Joomla 구성 요소/모듈/플러그인 그리고 난 항상이 질문을 내놓았습니다 :PHP의 '&'기호는 결과에 어떤 영향을 줍니까?

'&'기호는 어떻게 함수 나 변수에 첨부되어 결과에 영향을 줍니까? 예를 들어

:

$variable1 =& $variable2; 

또는

function &usethisfunction() { 
} 

또는 내가 PHP 매뉴얼 및 기타 관련 소스를 통해 검색을 시도했지만 아무것도 찾을 수 없습니다

function usethisfunction(&thisvariable) { 
{ 

이 특별히 주소 내 질문.

+0

을 추가 이제 경우 – Casebash

답변

7

이들은 references으로 알려져 있습니다. 여기

몇 가지 "일반적인"PHP 코드의 예입니다

function alterMe($var) { 
    $var = 'hello'; 
} 

$test = 'hi'; 
alterMe($test); 
print $test; // prints hi 

$a = 'hi'; 
$b = $a; 
$a = 'hello'; 
print $b; // prints hi 

그리고 이것은 당신이 참조를 사용하여 달성 할 수있는 것입니다 :

function alterMe(&$var) { 
    $var = 'hello'; 
} 

$test = 'hi'; 
alterMe($test); 
print $test; // prints hello 

$a = 'hi'; 
$b &= $a; 
$a = 'hello'; 
print $b; // prints hello 

핵심적으로 견실 한 세부 사항 문서에 있습니다. 그러나 본질적으로 :

PHP에서의 참조는 동일한 변수 내용에 다른 이름으로 액세스하는 수단입니다. 그들은 C 포인터와 같지 않습니다. 대신 심볼 테이블 별칭입니다. PHP에서는 변수 이름과 변수 내용이 다르므로 동일한 내용의 이름이 다를 수 있습니다. 유닉스 파일 이름과 파일에 가장 가까운 유추가 있습니다. 변수 이름은 디렉토리 항목이고 변수 내용은 파일 자체입니다. Unix 파일 시스템에서 참조를 하드 링크로 비유 할 수 있습니다.

1

참고입니다. 2 개의 변수 이름이 동일한 내용을 가리 키도록 허용합니다.

2
<?php 

$a = "hello"; # $a points to a slot in memory that stores "hello" 
$b = $a;  # $b holds what $a holds 

$a = "world"; 
echo $b;  # prints "hello" 

우리는 두 번째 예는 유효한 PHP 코드가 아닙니다 &

$a = "hello"; # $a points to a slot in memory that stores "hello" 
$b = &$a; # $b points to the same address in memory as $a 

$a = "world"; 

# prints "world" because it points to the same address in memory as $a. 
# Basically it's 2 different variables pointing to the same address in memory 
echo $b;   
?>