2016-10-10 2 views
0

문서에서 나는 2를 어떻게 설정하는지 보았습니다 &, 왜?참고로 돌아 가기 PHP

그리고 제발 말할 수

이 1 beetween 어떤 차이 :

function &func() 
{ 
    static $static = 0; 
    $static++; 
    return $static; 
} 
$var1 = func(); 
echo "var1:", $var1; // 1 

이 2 :

function func() 
{ 
    static $static = 0; 
    $static++; 
    return $static; 
} 
$var1 = func(); 
echo "var1:", $var1; // 1 

또는 다른 변형

이 1 :

function &func() 
{ 
    static $static = 0; 
    $static++; 
    return $static; 
} 
$var1 = &func(); 
echo "var1:", $var1; // 1 

이 2

function func() 
{ 
    static $static = 0; 
    $static++; 
    return $static; 
} 
$var1 = &func(); 
echo "var1:", $var1; // 1 

답변

1

this 2 및 제 this 1 차이 만이있다. 다른 모든 것은 잘못 시도되었습니다 return by reference.

두 번째 this 2은 심지어 PHP 고지 (Notice: Only variables should be assigned by reference in ... on line ...)를 던집니다.

차이점은 첫 번째 this 2이 값으로 돌아오고 두 번째는 this 1이 참조로 반환된다는 것입니다. 참조이기 때문에 함수 외부에서 변수를 변경할 수 있습니다. (제 2 기능 호출)와 모든 니펫

function &func() 
{ 
    static $static = 0; 
    $static++; 
    return $static; 
} 
$var1 = &func(); 
echo "var1:", $var1; // 1 
$var1 = 10; 
$var1 = &func(); 
echo "\nvar1:", $var1; // 11 

https://3v4l.org/uJHSF

evals :
1 이 1 : https://3v4l.org/p6erT
1이 2 : https://3v4l.org/9OcaC
2이 1이 2 https://3v4l.org/uJHSF
2 : https://3v4l.org/qJ3qO

PHP 매뉴얼 참조 :

+0

확인 - https://repl.it/DsmD/1 – MaximPro

+0

변수를 출력하기 때문에 예제에는 실제 차이점이 없습니다. 차이점은 무언가가 어떻게 반환되는지에 관한 것입니다. 명시 적으로 사용하는 경우 참조를 사용합니다. 인쇄물에는 참조가 필요 없으며 참조를 사용해서는 안됩니다. –

+0

그래서 '1st this 1'과'1st this 2'의 차이는 무엇입니까? – MaximPro

관련 문제