PHP

26. PHP 함수의 활용

drizzle0925 2021. 3. 9. 20:28
728x90

함수 안의 함수(function within function)

PHP에서는 함수에 안에 또 다른 함수를 선언할 수 있다.

PHP에서 모든 함수는 전역 함수이므로, 함수 내부에서 선언된 함수라도 해당 함수 외부에서 호출할 수 있다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
<?php 
    function hello(){
        echo "hello";
        function hi(){
            echo "hi";
        }
    }
 
    hello();
    echo "<br>";
    hi();
?>
cs

 

hi() 함수는 hello() 함수 내부에서 정의된다.

hello 함수를 호출해도 hi함수는 호출되지 않는다. 정의만 될 뿐이다.

그래서 hi()를 호출하기 위해서는 함수를 호출하는 코드를 적어주어야 한다.

 


재귀 함수(recursive function)

재귀 함수(recursive function)란 함수 내부에서 함수가 자기 자신을 또다시 호출하는 함수를 의미한다.

이러한 재귀 함수는 자기가 자신을 계속해서 호출하기때문에 끝없이 반복된다.

따라서 함수 내에 재귀 함수를 중단하도록 조건을 적어주어야 한다.

 

프로그래밍을 처음 하는 분들에게는 왜 재귀 함수를 왜 필요한지 이해가 안 될 수도 있지만 재귀 함수는 알고리즘이나 자료 구조론에서 아주 중요한 개념이다.

재귀 함수는 복잡한 문제도 간단하게 접근할 수 있는 장점이 있다.

 

 

1
2
3
4
5
6
7
8
9
10
<?php 
    function increment($num)
    {
        if($num > 1)                           // $num > 1보다 클때
            return $num + increment($num - 1); // 인자를 1씩 감소시키면서 게속 더해준다
        else
            return 1;
    }
    echo increment(4); // 4 + 3 + 2 + 1 = 10
?>
cs

 

100번 이상의 재귀 호출은 스크립트가 중단될 수 있으므로, 될 수 있으면 사용하지 않는 것이 좋다.

가변 함수(variable function)

가변 함수(variable function)란 변수를 사용하여 함수를 호출하는 것을 말한다.

PHP에서는 변수 이름에 괄호(())를 붙이면, 해당 변수의 값과 같은 이름의 가지는 함수를 호출한다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php 
    function hello(){
        echo "hello() 함수입니다.<br>";
    }
 
    function hi(){
        echo "hi() 함수입니다.<br>";
    }
 
    $func = "hello";
    $func();    // first() 함수를 호출함.
    $func = "hi";
    $func();  // second() 함수를 호출함.
?>
cs

728x90

'PHP' 카테고리의 다른 글

28. PHP Form 검증  (0) 2021.03.10
27. PHP Form 처리  (0) 2021.03.09
25. PHP 매개변수와 인자  (0) 2021.03.07
24. PHP 함수  (0) 2021.03.07
23. PHP 연관배열  (0) 2021.03.06