> 백엔드 개발 > PHP 튜토리얼 > PHP 참조 전달 및 반환

PHP 참조 전달 및 반환

伊谢尔伦
풀어 주다: 2016-11-22 11:12:45
원래의
1127명이 탐색했습니다.

참조로 전달

참조로 변수를 함수에 전달하면 함수가 매개변수 값을 수정할 수 있습니다. 구문은 다음과 같습니다.

<?php
    function foo(&$var)
    {
        $var++;
    }
    $a=5;
    foo($a);    // $a is 6 here
?>
로그인 후 복사

함수 호출에는 참조 기호가 없으며 함수 정의에만 참조 기호가 있습니다. 함수 정의만으로도 매개변수가 참조로 올바르게 전달되기에 충분합니다. 최신 버전의 PHP에서는 foo(&$a);에서 &를 사용하면 "참조에 의한 호출 시간"이 더 이상 사용되지 않는다는 경고가 표시됩니다.

다음을 참조로 전달할 수 있습니다.

foo($a)와 같은 변수

foo(new foobar())와 같은 새 문

함수에서 반환된 참조(예:

<?php
    function &bar()
    {
        $a = 5;
        return $a;
    }
    foo(bar());
?>
로그인 후 복사

다른 표현식은 참조로 전달할 수 없으며 결과는 정의되지 않습니다.) 예를 들어, 참조로 전달하는 다음 예는 유효하지 않습니다.

<?php
    function bar() // Note the missing &
    {
        $a = 5;
        return $a;
    }
    foo(bar()); // 自 PHP 5.0.5 起导致致命错误
    foo($a = 5) // 表达式,不是变量
    foo(5) // 导致致命错误
?>
로그인 후 복사

이러한 조건은 PHP 4.0.4 이상 버전에서 사용할 수 있습니다.

참조 반환

참조 반환은 참조가 어떤 변수에 바인딩되어야 하는지 함수를 사용하려고 할 때 사용됩니다. 성능을 높이기 위해 반환 참조를 사용하지 마십시오. 엔진은 자체적으로 최적화할 만큼 똑똑합니다. 유효한 기술적 이유가 있는 경우에만 참조를 반환하십시오! 참조를 반환하려면 다음 구문을 사용하십시오.

<?php
    class foo {
        public $value = 42;
        public function &getValue() {
            return $this->value;
        }
    }
    $obj = new foo;
    $myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 42.
    $obj->value = 2;
    echo $myValue; // prints the new value of $obj->value, i.e. 2.
?>
로그인 후 복사

이 예에서는 참조 구문이 사용되지 않은 것처럼 getValue 함수에서 반환된 개체의 속성에 복사되지 않고 값이 할당됩니다.

참고: 매개변수 전달과 달리 여기에서는 & 기호를 두 위치 모두에서 사용해야 합니다. 이는 일반적인 복사본이 아닌 참조가 반환됨을 나타내고 $myValue가 참조로 바인딩됨을 나타냅니다. 평소 숙제.

참고: return ($this->value);와 같은 함수에서 참조를 반환하려고 하면 작동하지 않습니다. 참조된 변수. 함수에서는 참조 변수만 반환할 수 있으며 다른 방법은 없습니다. 코드가 동적 표현식이나 new 연산자의 결과를 반환하려고 하면 PHP 4.4.0 및 PHP 5.1.0부터 E_NOTICE 오류가 발생합니다.


관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿