함수-함수의 활용

유영·2023년 3월 5일
0

PHP

목록 보기
39/57

조건적인 함수(conditional function)

조건적인 함수는 특정 조건을 만족할 때만 선언되는 함수입니다.
설정된 조건을 만족하지 못했을 때는 선언 자체가 되지 않으므로, 해당 함수를 호출할 수 없습니다.

$makefunc = true;
//func(); // 이 부분은 func() 함수가 선언되기 전이므로, 함수를 호출할 수 없습니다.
if($makefunc) {
    function func()
    {
        echo "이제 함수를 사용할 수 있습니다";
    }
    func(); // 이 부분은 func() 함수가 선언되었으므로, 함수를 호출할 수 있습니다.
}

함수안의 함수(function within function)

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

function out()
{
    function in()
    {
        echo "이제 함수를 사용할 수 있습니다";
    }
}//in(); // 이 부분은 in() 함수가 선언되기 전이므로, 함수를 호출할 수 없습니다.out();in();   // 이 부분은 in() 함수가 선언되었으므로, 함수를 호출할 수 있습니다.

위의 예제에서 in() 함수는 out() 함수 내부에서 정의됩니다.
따라서 ①번 라인에서는 아직 단 한 번도 out() 함수가 호출되지 않았으므로, in() 함수가 정의되어 있지 않습니다.
②번 라인에서 out() 함수가 호출되면서 비로소 in() 함수도 같이 정의됩니다.
따라서 ③번 라인에서는 정의된 in() 함수를 호출할 수 있게 됩니다.


재귀 함수(recursive function)

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

이러한 재귀 함수는 자기가 자신을 계속해서 호출하므로, 끝없이 반복될 것입니다.
따라서 함수 내에 재귀 호출을 중단하도록 조건이 변경될 명령문을 반드시 포함해야 합니다.

프로그래밍을 처음 접하는 사람들은 이러한 재귀 함수가 왜 필요한가에 대해 이해하기 힘들 수도 있습니다.

하지만 재귀 함수는 알고리즘이나 자료 구조론에서는 매우 중요한 개념 중 하나입니다.
또한, 재귀 함수를 사용하면 복잡한 문제도 매우 간단하게 논리적으로 접근하여 표현할 수 있습니다.

	function factorial($num)
	{
		if($num > 1)							// 1이 될 때까지 
			return $num * factorial($num - 1);	// 1씩 감소시킨 값을 전달하여 자기 자신을 계속 호출함.
		else
			return 1;	
	}
	echo factorial(4);

//24

100번 이상의 재귀 호출은 스택의 한계에 도달하여 스크립트가 중단될 수 있으므로, 될 수 있으면 사용하지 않는 것이 좋습니다.


가변 함수(variable function)

가변 함수(variable function)란 변수를 사용하여 함수를 호출하는 것을 의미합니다.

PHP에서는 변수 이름에 괄호(())를 붙이면, 해당 변수의 값과 같은 이름을 가지는 함수를 호출합니다.
따라서 변수에 함수의 이름을 별도로 지정할 수 있습니다.

function first()

{
    echo "first() 함수입니다.<br><br>";
}
function second($para)

{
    echo "second() 함수입니다.<br>";

    echo "함수 호출 시 전달받은 인수의 값은 {$para}입니다.";
}
$func = "first";
$func();    // first() 함수를 호출함.
$func = "second"
$func(20);  // second() 함수를 호출함.

get_file_name() : (파일 경로 제외하고) 파일명만 나오게 하는 함수 (os 모듈 필요)
get_file_ext() : 확장자를 찾아내는 함수


rand 와 mt_rand 는 정수를 랜덤하게 생성하는 함수입니다.
rand 는 윈도우에서 실행하는 것을 기준으로 0부터 32,767 까지의 숫자가 생성되며,
mt_rand 는 윈도우에서 실행하는 것을 기준으로 0부터 2,147,483,647 까지의 숫자가 생성됩니다.
참고로 리눅스에서 실행하는 경우 둘다 2,147,483,647 까지의 숫자가 생성됩니다.
mt_rand 가 rand 보다 실행속도가 더 빠르고 생성할 수 있는 숫자의 범위도 더 크기 때문에
mt_rand 의 사용이 권장되고 있습니다.
mt_rand ([최소값], [최대값]);

0개의 댓글