일부 프레임워크에서는 함수에 &$arr 유형의 변수가 표시되는 경우가 있습니다. 온라인으로 검색한 결과 이는 참조용이라는 것을 알게 되었으며, 개발 중에 이를 사용해야 하는 경우가 무엇인지 알고 싶습니다. 이것을 사용하면 단점이 있습니다
일부 프레임워크에서는 함수에 &$arr 유형의 변수가 표시되는 경우가 있습니다. 온라인으로 검색한 결과 이는 참고용이라는 것을 알게 되었으며, 개발 중에 이를 사용해야 하는 상황이 무엇인지 알고 싶습니다. 이것을 사용하면 단점이 있습니다
예를 들어 원래 값을 변경해야 하는 경우 여러 값을 출력해야 하는 함수가 있습니다.
질문자는 PHP가 하나의 값만 반환할 수 있다는 점을 알아야 합니다. 물론 배열 패키징을 사용할 수도 있습니다.
<code><?php function test(&$a,&$b){ $a = 1; $b = 1; } test($a,$b); echo $a,"@",$b;</code>
출력을 볼 수 있습니다
<code>1@1</code>
또 다른 상황은 대규모 배열을 사용할 때 메모리 오버헤드를 절약하기 위해 메모리 복사를 생략할 수 있다는 것입니다
<code class="php">$a = "china"; $b = &$a;</code>
이런 방식으로 PHP는 데이터 사본 하나만 저장하면 됩니다. 따라서 프로그래밍할 때 일반적으로 큰 변수는 메모리 리소스를 절약하기 위해 참조로 전달되어야 합니다. PHP 함수 매개변수 호출에서는 기본적으로 객체가 참조로 전달됩니다.
문의하고 싶은 내용은
<code>function (&$arr) {} </code>
이렇게 사용하는 건가요?
이것은 $arr 변수 자체를 수정하는 데 사용됩니다. 함수는 닫힌 공간이기 때문에 함수에서 $arr을 변경해도 외부 변수는 변경되지 않습니다. return
을 사용하여 변경된 변수를 반환하고 싶지 않은 경우 이를 사용할 수 있습니다.
예를 들어 bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
이 함수를 보면 반환값이 bool 타입임을 알 수 있지만, 수정된 배열을 반환할 수도 있습니다.
& 참조 기호를 사용하면 됩니다.
배열이 전달하는 기본값은 객체의 기본값과 전혀 다르기 때문입니다. 값을 전달하면 복사가 되는데, 정수나 부동소수점과 달리 배열은 내용이 많고 복사로 인한 오버헤드가 크기 때문에 일반적으로 강제로 값을 전달하게 됩니다.