고양이 여름이의 지식채널

PHP 함수 (function) - 함수인자, 참조, 반환값 본문

Programming/PHP

PHP 함수 (function) - 함수인자, 참조, 반환값

썸머캣 2021. 1. 20. 23:43

함수

특정 역할을 하는 코드를 빈번하게 사용할 때 매번 그 코드를 복사해서 사용한다면 코드의 길이도 길어질뿐만 아니라 여러모로 코드 관리하기가 불편합니다. 함수는 여러 명령을 이름을 부르는것만으로 처리할 수 있게 해줍니다.

 

함수의 호출

 

<?php
     funtion sum ($a, $b) {
         return $a + $b;
     }
     $result = sum(3, 4);
     echo $result."<br>";
     $result = sum(5, 7);
     echo $result;
?>

결과로 7과 12를 출력한다.

 

위 예제에서 볼 수 있듯이

$a + $b 라는 명령을 "sum()" 함수를 호출할 때 마다 사용할 수 있습니다.

 

함수는 기본적으로 아래의 형태를 갖습니다.

함수이름 ( 인자값1, 인자값2, 인자값3 . . .);

 

 

 

함수의 인자

PHP에는 함수의 인자를 넘겨주는 세 가지 방법이 있습니다.

 

1. 값에 의한 인자 전달

   값에 의한 인자 전달 방법은 기본적인 방법으로 함수를 호출할 때 인자를 직접 값으로 전달하는 것을 말합니다.

 

<?php
    function swap($a, $b) {
        $c = $a;
        $a = $b;
        $b = $c;
    }
    
    $num1 = 5;
    $num2 = 6;
    swap($num1, $num2);
    echo "$num1, $num2";
?>

결과는 num1은 5, num2는 6을 출력합니다.

위의 함수는 서로 값을 바꾸는 swap 함수인데
함수에 인자로 값만 전달하여 $a와 $b의 값만 변경되었고. num1과 num2의 값은 그대로 유지됩니다.

 

 

2. 참조에 의한 인자 전달

   참조에 의한 인자 전달 방법은 함수에 원본을 전달해주는 것과 같습니다. 원본을 인자로 전달해 주기 때문에 함수 내에서 그 값을 수정하면 원본의 내용까지 수정됩니다.

 

<?php
    function swap(&$a, &$b) {
        $c = $a;
        $a = $b;
        $b = $c;
    }
    
    $num1 = 5;
    $num2 = 6;
    swap($num1, $num2);
    echo "$num1, $num2";
?>

참조기호는 & 엠퍼센트 입니다.
이 기호는 변수의 값이 아닌 변수 자체를 전달하라는 
의미이기 때문에 함수 내에서 변경하는 것은 원본을 수정하는 것과 같습니다.
따라서 결과는

num1은 6, num2는 5를 출력합니다.

 

 

3. 기본 인자값

   기본 인자값은 함수의 인자에 기본값을 설정하는 것을 말합니다.

 

<?php
    function example($url = "example.com") {
        return "페이지 주소 : $url";
    }
    
    echo example();
    echo example("www.example.com");
?>

이 예제와 같이 함수를 정의할 때 인자에 초기값을 부여하면 인자가 전달 되지 않았을 때
이값을 초기값으로 사용하게 됩니다.
위 예제는 다음과 같이 출력됩니다.

페이지 주소 : example.com
페이지 주소 : www.example.com

 

 

반응형

 

함수의 반환값

함수가 역할을 수행한 후 그 결과를 반환해야 한다면 return을 통해서 결과값을 반환할 수 있습니다.

반환값을 돌려주는 방법은 두 가지 방법이 있습니다.

 

 

 

1. 값에 의한 반환

   기본적인 방법으로 함수의 수행결과를 값으로 돌려 줍니다.

 

<?php
    function sum($a, $b) {
        return $a + $b;
    }
    
    $result = $sum(3, 4);
    echo $result;
?>

$result 변수로 함수 결과가 반환값으로 되돌려 받습니다.

기본적으로 함수는 하나의 값만 반환할 수 있는데 여러개의 값을 반환해야하는 경우는 배열을 이용합니다.

<?php
    function return_array() {
        return array(0, 1, 2);
    }
    
    $array = $return_array();
    echo "$array[0], $array[1], $array[2]";
?>

예제의 결과로 0,1,2가 출력됩니다.

 

 

2. 참조에 의한 반환

   참조를 통해서 값을 반환받고자 할 때는 함수의 정의와 호출 모두에서 & 기호를 사용합니다.

 

<?php
    function &func() {
        static $static = 0;
        $static++;
        return $static;
    }
    
    $var = & func();
    echo $var;
    func();
    func();
    echo $var;
    $var = 0;
    func();
    echo $var;
?>

func 함수의 반환값인 $static은 정적변수로 함수가 호출되고 난 후에도 그값이 사라지지 않습니다.
이 정적 변수를 참조로 전달하면 변수 $var는 $static 변수와 같기 때문에 func()함수가 호출될때마다 
$var값도 변경됩니다.

따라서 위 예제의 결과는 131을 출력합니다.

 

 

함수는 코드의 재사용성을 높여주기 때문에 프로그램 개발 속도는 물론 신뢰성있는 프로그램 작성에도 용이합니다.

 

 

 

PHP 제어문 ( switch )

 

PHP 제어문 ( switch )

switch 문 switch 문은 어떤 변수에 대해 그 값에 따라 각각 특정한 일을 처리하고자 할때 유용하게 사용될 수 있습니다. switch ( 표현식) {  case 값1:  명령문;  break;  case 값2:  명령문;  break;  d..

summer-cat93.tistory.com

 

728x90
반응형
Comments