답변
참조로 전달됩니다. 함수 내부의 변수는 호출 컨텍스트의 변수와 동일한 데이터를 가리 킵니다.
function foo(&$bar)
{
$bar = 1;
}
$x = 0;
foo($x);
echo $x; // 1
매개 변수로 변수에 대한 참조를 허용합니다.
이것은 함수가 매개 변수 (예 : $var = "Hi!"
)를 변경하면 호출 함수가 전달한 변수에 영향을 미칩니다.
기본적으로 기능 내부에서 $var
을 변경하면 외부로 변경됩니다. 예를 들어 :
$var = 2;
function f1(&$param) {
$param = 5;
}
echo $var; //outputs 2
f1($var);
echo $var; //outputs 5
감사합니다. 매우 명확하게 작성되었습니다. –
변수 (& $ foo는) 이전에 앰퍼샌드 (&)는 대신에 참조로 변수를 전달하도록 지정 값으로 패스를 재정의합니다. 예를 들어
이있는 경우 :
function doStuff($variable) {
$variable++;
}
$foo = 1;
doStuff($foo);
echo $foo;
// output is '1' because you passed the value, but it doesn't alter the original variable
doStuff(&$foo); // this is deprecated and will throw notices in PHP 5.3+
echo $foo;
// output is '2' because you passed the reference and php will alter the original variable.
그것은 두 가지 방법을 사용할 수 있습니다.
function doStuff(&$variable) {
$variable++;
}
$foo = 1;
doStuff($foo);
echo $foo;
// output is '2' because the declaration of the function requires a reference.
이것은 pass by reference입니다.
C 포인터에 익숙하다면 포인터를 변수에 전달하는 것과 같습니다.
(C와 같이) 역 참조 할 필요는 없습니다. 이 야유의 함수 내에서 수정 될 때
+1. 이 포인터가 C에서 의미하는 포인터라면 위의 것을 읽을 때 궁금해하십니까? 귀하의 확인과 함께 이제는 완벽하게 이해됩니다. – Kaji
당신이 업데이트 될 때 $ var에의 실제 값을 의미 기준으로 $ var에 전달하는 예는
:
function boo(&$var) {
$var = 10;
}
$var = 20;
echo $var; //gets 20
boo($var);
echo $var //gets 10
어떤 기능이 앰퍼샌드로 시작하면 (&) , Reference 함수에 의한 호출을 의미합니다. 값 대신 변수에 대한 참조를 리턴합니다.
function reference_function(&$total){
$extra = $total + 10;
}
$total = 200;
reference_function($total) ;
echo $total; //OutPut 210
- 1. 이 JavaScript 함수의 목적은 무엇입니까?
- 2. GETITEMBYID()를 사용하기 전에 예외를 확인하십시오.
- 3. asList를 사용하는 목적은 무엇입니까?
- 4. 포인터를 사용하는 목적은 무엇입니까?
- 5. NSOrderedSame을 사용하는 목적은 무엇입니까?
- 6. 여기서 serialVersionUID를 사용하는 목적은 무엇입니까?
- 7. 함수의 인수를 위치별로 참조 하시겠습니까?
- 8. Android에서 System.img를 사용하는 목적은 무엇입니까?
- 9. GLSL에서 glBindAttributeLocation을 사용하는 목적은 무엇입니까?
- 10. xml web-service ..를 호출하는 동안 NSURLConnection을 사용하는 목적은 무엇입니까?
- 11. 해시 테이블을 컬렉션으로 사용하는 일반적인 목적은 무엇입니까?
- 12. 각 컨트롤러에서 $ name을 (를) 선언하는 목적은 무엇입니까
- 13. 다른 함수의 변수 사용하기 python
- 14. 클래스와 이름이 같은 PHP 클래스의 초기 함수의 목적은 무엇입니까?
- 15. 스트럿트에서 logic 태그를 사용하는 목적은 무엇입니까?
- 16. 레이크의 목적은 무엇입니까?
- 17. __cxa_pure_virtual의 목적은 무엇입니까?
- 18. Ruby를 사용하기 전에 알아야 할 사항은 무엇입니까?
- 19. linq에서 사용하기 전에 null을 확인하는 방법은 무엇입니까?
- 20. 사용하기 전에 NSDate가 유효한지 확인하십시오.
- 21. 사용하기 전에 SQLite 데이터베이스 만들기
- 22. 필터를 사용하기 전에 필터 (DRY)를 구성하는 경우
- 23. _never_executed()의 목적은 무엇입니까?
- 24. @depends 플래그는 PHPUnit 함수의 인수를 깨뜨립니다.
- 25. Zope 인터페이스의 목적은 무엇입니까?
- 26. 외부 시스템을 사용하기 전에 테스트해야합니까?
- 27. Selenium에서 testComplete() 명령의 목적은 무엇입니까?
- 28. 활동 활동 읽기 인수를 다시 시작하기 전에
- 29. 사용하기 전에 StringBuilder를 설정 하시겠습니까?
- 30. DataView를 사용하기 전에 DataTable을 설정해야합니다.
나는 – cambraca
그래서 그것이 진정한 종류,'전역의 $ var' – Alex
@ 알렉스를 사용할 때와 비슷한 동작 .. 내 예제에서'foo'와'bar'을 사용하기 시작있어,하지만 큰이있을 것 차이점 : 1) 전역이 아닌 범위 (다른 함수를 호출하는 함수)에서 작동하며 2) 변수의 이름을 알고있는 내부 함수에 종속되지 않습니다. 함수 인수로 참조되는 변수는 전역 변수보다 디버그가 쉬우 며 오류가 발생하기 쉽지만 같은 문제 (예 : 변수에 예기치 않은 변경)가 적용되는 경우에도 마찬가지입니다. – Matthew