소개
필수는 아니지만 함수는 본문의 마지막 문으로 return을 가질 수 있습니다. 함수가 호출되면 프로그램의 제어는 함수 블록의 마지막 문이 return인지 여부에 관계없이 본문 블록의 명령문을 실행한 후 호출 환경으로 돌아갑니다. retun 문이 없으면 제어는 호출자에게 NULL 값을 반환합니다. return 문이 표현식 절로 구성된 경우 표현식의 값이 반환됩니다. 함수는 스칼라 유형, 배열 또는 개체일 수 있는 값 하나만 반환할 수 있습니다. 반환된 값은 후속 처리를 위해 일부 변수에 할당될 수 있습니다.
반환 기능
다음 예에서 함수는 인수로 전달된 두 정수의 합을 반환합니다.
예시
출력
그러면 다음과 같은 결과가 생성됩니다. -
추가=30
배열 반환
함수는 하나의 값만 반환할 수 있습니다. 그러나 여러 값의 배열이 반환될 수 있습니다. 다음 예제는 덧셈, 뺄셈, 곱셈 및 나눗셈의 배열을 반환하는 함수에 두 개의 숫자를 전달합니다.
예시
$r1,"sub"=>$r2,"multiply"=>$r3,"division"=>$r4);}$x=10;$y=20;$arr=result($x,$y);foreach ($arr as $k=>$v){ echo $k . "->" . $v . "\n";}?>
출력
그러면 다음과 같은 결과가 생성됩니다. -
add->30sub->-10multiply->200division->0.5
참조로 반환
참조로 인수를 전달할 수 있는 것처럼 함수도 참조로 반환할 수 있습니다. 이를 위해 함수 이름 앞에 $ 기호를 붙여야 합니다. 또한 &기호는 함수 호출에서도 제공되어야 합니다.
다음 예에서 myfunction()에는 정적 배열이 있습니다. 요소 중 하나가 참조로 반환되고 변수에서 허용됩니다. 그런 다음 변수의 값이 수정되고 동일한 함수가 다시 호출됩니다. 이제 함수의 배열에 변경된 값이 표시되어야 합니다.
예시
출력
그러면 다음과 같은 결과가 생성됩니다. -
배열 요소:1 2 3 4 5참조로 반환된 배열:3배열 요소:1 2 100 4 5
변수 $x와 $y의 값은 swap() 함수에서 교환됩니다. 변수는 참조로 전달되므로 변수는 함수 외부에서도 수정된 값을 표시합니다.
반환 유형 힌트(반환 유형 선언)
PHP 7부터는 인수의 유형을 선언할 수 있는 것처럼 반환된 변수/객체에 대한 유형 힌트를 지정할 수 있습니다. 반환 유형의 경우 모든 스칼라 유형, 클래스 및 배열도 사용할 수 있습니다.
구문
//반환 값에 대한 유형 힌트가 있는 함수 정의function myfunction($arg1, $arg2):type{ .. .. return $var;}
스칼라 유형, 배열, 클래스/인터페이스, 반복 가능 및 객체를 포함한 모든 표준 PHP 데이터 유형은 함수 선언에서 반환 변수에 대한 유형 힌트를 제공하는 유효한 유형입니다.
예시
출력
그러면 다음과 같은 결과가 생성됩니다. -
float(13)
strict_types=1과 함께 선언문 사용 데이터 유형의 강제를 방지합니다.
예시
사전>출력
이제 다음과 같이 예외가 발생합니다 -
PHP 치명적인 오류:잡히지 않은 TypeError:add()의 반환 값은 정수 유형이어야 하며 float가 반환됩니다.