(함수)함수의 정의 - 함수의 정의(2)

· 댓글 : 0 조회 : 1544 · 0

아 요세 좀 바뻐서 글 올리는게 늦었네요

공부하랴 일하랴 ㅋㅋㅋ...

 

본론으로 들어가겠습니다.

 

------------------------------------------------------------------------------------------------------------

함수안에서 함수를 정의

 

<?php

inner_function(4);

outer_function(1,2);

inner_function(5);

 

function outer_function ($x, $y) {

 

function inner_function ($z) {

echo "\$z = $z
"

}

 

$v = $x + $y;

inner_function($v);

}

?>

 

--------------------------------------------------------------------------------------------------------------

위의 함수는 오류가 뜹니다.

inner_function를 처음으로 호출하였으나.. 아직 outer_function의 함수가 호출 되지 않았기때문입니다.

이 함수가 제대로 실행되기 위해선 inner_function를 삭제하거나 아니면 outer_function 먼저 호출하면은 됩니다.

즉 함수에에도 순서가 있으며 그 순서에 맞게 호출해야하겠습니다. 작성순서와 호출 순서 잘 맞춰야겠네요...

 

그리고 또한 outer_function를 한번이라도 호출하지 않는다면 inner_function함수는 존재 하지 않는 함수입니다.

함수안에 함수라서 먼저 outer_function의 함수가 열려야 실행이 되겠습니다.

 

출력값은

 

$z=3

$z=5

 

--------------------------------------------------------------------------------------------------------

출력값에 대한 설명

 

inner_function(4);  // 삭제했다는 가정을 둡니다.

outer_function(1,2);  // 매개변수 1,2를 받아서 outer_function 함수를 호출하였습니다.

inner_function(5);  // 매개변수 5를 받아서 inner_function 함수를 호출하였습니다.

--------------------------------------------------------------------------------------------------------

outer_function(1,2); // 매개변수를 받아 먼저 호출하였기 때문에 함수를 실행합니다.

                                실행하기전에 function inner_function ($z) 함수를 지나치게됩니다.

                                아직 inner_function 함수를 호출하지 않았기때문입니다.

                                $v = $x + $y; 호출전에 연산이 나왔습니다. 그러므로 $v는 3이되며

                                inner_function($v); 연산이 된 매개변수를 받아 inner_function를 호출하였습니다. $v는 3이였습니다.

                                실매개변수 $v는 3이였으며 function inner_function ($z) 함수의 형식매개변수 $v =$z는 3이되겠습니다. 

                                echo "\$z = $z
"의 연산자에 의해 $z=3이 나오게되겠습니다.

 

inner_function(5); // 매개변수를 받아 호출하였습니다.

                              outer_function(1,2); 이부분이 먼저 호출되어 이 함수의 안에 있는 function inner_function ($z)

                              이 함수가 실행이 되겠습니다.

 

                              즉 실 매개변수는 5이며 $z는 형식매개변수 값도 5가되므로

                              echo "\$z = $z
" 이 연산자를 통해 값은 5가 되겠습니다.

-----------------------------------------------------------------------------------------------------------

함수안에 함수로인하여 결과 값이 2번이나 출력되었습니다.

 

-----------------------------------------------------------------------------------------------------------

 

return 문장

 

return 문장은 함수가 어떤 값을 자신을 호출한 곳으로 반환할 때 사용된다.

반환할 수 있는 자료형은 스칼라 형은 물론 배열형, 객체형도 가능하다. 함수에서 return을 수행하게되면 함수의 수행이 즉시 중단되면서

이 함수를 호출했던 부분으로 제어가 되돌아가 간다.

------------------------------------------------------------------------------------------------------------------------

return문장의 설명이었습니다.

예를 들어 쉽게 설명해보도록 하겠습니다.

$year 변수값이 2009라는 가정

 

<?php

function is_leap_year ($y) {

if($y % 4 == 0  && $y % 100 !=0) || % 400 == 0) return 1; else return 0;

}

$year = $POST_[year];

$result = is_leap_year($year);

 

if($result) echo "[$year]년은 윤년입니다.
";

else echo "[$year]년은 윤년이 아닙니다.";

?>

 

-------------------------------------------------------------------------------------------------------------------------

출력값은

[2009]년은 윤년이 아닙니다.

-------------------------------------------------------------------------------------------------------------------------

함수의 실행 순서는 위에 많이 설명되어 있기때문에 넘어가겠습니다.

곧바루 함수에서 실매개변수를 받아서 형식 매개변수로 전달된 상태라고 한 상태에서 아래 연산을 보도록하겠습니다.

if($y % 4 == 0 && $y % 100 !=0) || $y % 400 == 0) return 1; else return 0;}

 

$y % 4  --- 2009를 4로 나누고 그의 나머지 값이 0 이면 TRUE

$y % 100  --- 2009를 100으로 나누고 나머지 값이 0아 아니면 TRUE

$y % 4 == 0 && $y % 100 !=0  -----------  두개의 결과값이 TRUE이면 TRUE

 

$y % 400 == 0  ------ 2009를 400으로 나눈 값이 0이면 TRUE

 

($y % 4 == 0 && $y % 100 !=0) || $y % 400 == 0)  --- (두개조건이 TRUE 일때 TRUE ) 두개 값이 하나라도  TRUE 이면 TRUE  

 

TRUE이면 1 FALSE 이면 0

 

2009를 연산을 통해 계산하면 값은 0이 되게 됩니다.

 

if($y % 4 == 0 && $y % 100 !=0) || % 400 == 0) return 1; else return 0;  // 연산된 결과를 return을 통해 반환합니다.

 

if($result) echo "[$year]년은 윤년입니다.
";

else echo "[$year]년은 윤년이 아닙니다.";                     

 

 // 즉 값은 0이므로 출력값은 2009년은 윤년이 아닙니다. 가 되겠습니다.

 

-------------------------------------------------------------------------------------------------------------

이 다음 시간에는

함수정의를 하면서 나왔던 내용 함수의 매개변수 ( 실 매개변수, 형색 매개변수) 와

함수의 정의에서 나왔던 함수의 실행순서에 대해서 자세히 설명할까 했습니다만은

이 전에 다 설명을 했기때문에 앞으로 계속 보면 익숙해질거라 생각해서 그냥 넘어가겠습니다.

 

다음시간에는 함수를 이용해서 배열을 테이블로 변환하는 방법를 설명하도록하겠습니다.

 

통계분석을 위해 매체별 전용URL 사용해주세요.
불타는면빨님의 포스트
최근 리스트
리스트가 없습니다.