PHP에서 함수는 기본적으로 하나의 값만 반환할 수 있습니다. 즉, 두 개의 변수를 명시적으로 동시에 반환하는 것은 불가능합니다. 하지만 배열(array)과 같은 자료 구조에 여러 값을 담아 반환하면, 사실상 두 개 이상의 값을 한 번에 전달하는 것과 같은 효과를 얻을 수 있습니다.
예제 코드
다음 예제는 어떤 숫자의 약수(factor)를 모두 찾아 배열에 담은 뒤 반환하는 함수입니다. 호출부에서는 반환된 배열을 foreach 문으로 순회하며 결과를 출력합니다.
<?php
function factors( $n ) {
// 빈 배열 선언
$fact = array();
// 1부터 n까지 반복하면서 약수 확인
for ( $i = 1; $i < $n; $i++ ) {
// i가 n의 약수라면 배열에 추가
if( $n % $i == 0 )
array_push( $fact, $i );
}
// 배열 반환
return $fact;
}
// 변수 선언 및 초기화
$num = 12;
// 함수 호출
$nFactors = factors($num);
// 결과 출력
echo 'Factors of ' . $num . ' are: <br>';
foreach( $nFactors as $x ) {
echo $x . "<br>";
}
?>실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Factors of 12 are: 1 2 3 4 6
추가 팁
이처럼 배열을 활용하면 함수가 여러 값을 유연하게 전달할 수 있습니다. 특히 PHP 7.1 이상에서는 다음과 같이 리스트(list()) 구조 분해 할당을 사용하면 반환된 배열의 각 요소를 개별 변수에 바로 담을 수 있어 더욱 편리합니다.
// 두 값을 배열로 반환하는 함수
function getValues() {
return [10, 20];
}
// 각 값을 개별 변수에 할당
[$a, $b] = getValues();
echo $a; // 10
echo $b; // 20필요에 따라 연관 배열을 사용해 키와 함께 값을 반환하면, 의미가 명확한 다중 값 처리도 가능합니다.