본문 바로가기
개발 기초/PHP

PHP - 매개변수와 인수

by 륀두 2020. 4. 27.
반응형

함수의 매개변수(parameter)란 함수를 호출할 때 인수로 전달된 값을 함수 내부에서 사용할 수 있게 해주는 변수입니다.

또한, 함수의 인수(argument)란 함수가 호출될 때 함수로 값을 전달해주는 변수를 가리킵니다.

대부분의 함수는 하나 이상의 매개변수를 가지며, 매개변수가 없는 함수도 존재합니다.

함수로 전달된 인수에 저장된 값을 매개변수에 전달할 때는 다음 방식 중 하나를 선택할 수 있습니다.

  1. 값 전달 방식
  2. 참조 전달 방식

 

1. 값 전달(passing by value)

기본적으로 함수의 인수는 값 전달(passing by value) 방식으로 매개변수로 전달됩니다.

인수를 함수에 전달하면, 새롭게 생성된 매개변수에 전달받은 값이 복사되어 저장됩니다.

이처럼 매개변수에 저장된 값은 전달받은 데이터의 복사본으로, 함수 안에서 변경되어도 함수 밖의 원본 데이터에는 영향을 주지 않습니다.

function increment($para)
{
    $para++; // $value의 값을 복사하여 increment() 함수에 인수로 전달함.
}
$value = 1;
increment($value);

// 매개변수 $para는 함수가 호출될 때 생성되며, 전달받은 값인 1을 2로 증가시킵니다.
// 하지만 함수 밖에 존재하는 변수 $value의 값은 변하지 않습니다.

 

2. 참조 전달(passing by reference)

함수 내부에서 함수 밖의 데이터를 조작하기 위해서는 해당 변수를 전역 변수로 선언할 수도 있습니다.

하지만 참조 전달(pass by reference)을 이용하면 더욱 유연한 코드를 작성할 수 있습니다.

참조 전달은 인수로 전달받은 값을 복사하는 것이 아닌, 전달받은 원본 데이터에 대한 참조 변수를 매개변수에 전달합니다.

따라서 참조 전달은 원본 데이터의 복사된 값을 가지는 것이 아니라 원본 데이터를 그대로 참조하게 됩니다.

그래서 함수 내부에서 값을 변경하면, 함수 밖의 원본 데이터도 같이 바뀌게 됩니다.

참조 전달을 사용하기 위해서는 함수를 선언할 때 매개변수 앞에 '&'기호를 붙여주면 됩니다.

function increment(&$para) // 인수로 전달되는 값의 원본을 참조함.
{
    $para++;
}
$value = 1;
increment($value);

//함수 밖에 존재하는 변수 $value의 값이 같이 변경되었습니다.
반응형

'개발 기초 > PHP' 카테고리의 다른 글

PHP - 배열 관련 함수  (0) 2020.04.27
PHP - 변수 관련 함수  (0) 2020.04.27
PHP - 함수  (0) 2020.04.27
PHP - 배열(array)  (0) 2020.04.27
PHP - 기타 제어문(continue, break)  (0) 2020.04.24