웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
[동주아빠] PHP 게시판 만들기 기초 (7) 사용자정의함수
2002.12.25 15:14
이번 시간을 마지막으로 PHP 기초 문법에 대해서 끝내려고 합니다. 겨우 6번의 강좌 내용으로 기초 문법이 끝난 것은 아닙니다. 그러나 이 강좌(학습)의 주제가 PHP 게시판 프로젝트인만큼 실제 PHP 게시판을 만드는 실전을 통해 여러 문법과 함수, 기타 PHP 프로그래밍 방식 등에 대해 하나하나 알아나가도록 하겠습니다.
이번 시간에는 PHP에서 제공하는 기본 함수가 아닌 프로그래머가 만들 수 있는 사용자 정의 함수에 대해 알아보기로 하겠습니다.
PHP의 사용자 정의 함수는 다음과 같이 구성됩니다.
function 함수명(인자1, 인자2, ...) {
명령문
return 변수 ;
}
■ 함수명은 영문을 사용합니다.
■ 인자가 필요없을 때는 괄호 안의 인자를 생략해도 됩니다.
■ 마찬가지로 return할 변수가 필요없을 때는 return 문은 생략해도 됩니다.
프로그래밍이 완전히 처음이신 분은 이해하기 좀 힘드실 겁니다. 비주얼베이직이나 C언어 같은 것을 아주 조금이라도 다뤄보신 분은 금방 이해가 됩니다. 심지어 그냥 베이직이라도 다루어보신 분이라면 이해가 쉽겠죠.(근데 도스에서 돌아가는 BASIC이 언제적 얘기지?)
먼저 다음과 같은 my_age()라는 함수를 하나 만들어 실행해 봅시다.
1: <?
2: function my_age($birth) {
3: return 2002 - $birth ;
4: }
5:
6: $age = my_age(1980) ;
7: echo "나이는 만 $age 세 입니다.";
8: ?>
2행을 보면 my_age라는 함수의 인자로 $birth가 사용되었습니다.
3행을 보면 2002에서 $birth를 뺀 값을 리턴해주는 것을 알 수 있습니다.
이상이 my_age라는 사용자 정의 함수였고,
6행에서 my_age 함수를 실행하는데 인자로 1980을 넘겼습니다. 따라서 위의 3행에서와 같이 2002에서 1980을 뺀 값이 다시 되돌아 오겠죠. 이렇게 되돌아 온 값은 $age에 저장됩니다.
7행에서 $age를 출력하고 있습니다.
참, 사용자 정의 함수는 반드시 그 함수를 사용하기 전에 만들어 두어야 합니다. 꼭!
다음 예제는 여러 개의 값을 리턴할 때 사용하는 방식입니다. 리턴할 때는 배열로 리턴하고 받을 때는 list 함수를 사용해서 받아야 합니다. 이해가 안되시더라도 'array를 이용해 배열로 리턴하고 받을 때는 list 함수를 사용해서 받는다'라고만 알아두시면 됩니다. (자주 사용하면 그냥 익히게 됩니다.)
1: <?
2: function my_age($birthyear) {
3: $re_age = 2002 - $birthyear ;
4: return array(2002, $re_age) ;
5: }
6:
7: list($year, $age) = my_age(1975);
8: echo "$year 기준 만 $age 세 입니다";
9: ?>
4행을 보면 2개의 값을 리턴합니다.
PHP에서는 원칙적으로 하나의 값만 리턴하게 되어 있습니다. 따라서 2개 이상의 값을 리턴하려면 배열 함수인 array()를 사용해 배열을 통째로 넘겨야 합니다.
그리고 받을 때는,
7행에서와 같이 list 함수를 써서 받습니다. list 함수는 각각의 변수를 마치 배열처럼 만듭니다.
(이해가 안되시면 위의 예제를 그냥 외워버리세요.^^)
다음 실습은 함수의 인자에 기본 값을 지정하는 예입니다.
1: <?
2: function my_age($year = 1980) {
3: return 2002 - $year ;
4: }
5:
6: $age1 = my_age();
7: $age2 = my_age(1975);
8: echo "처음 $age1, 나중 $age2" ;
9: ?>
2행을 보면 $year라는 변수에 기본 값으로 1980을 지정해 놓고 있습니다. 그러면,
6행에서와 같이 인자를 쓰지 않고 그냥 함수명만 호출하면 이 함수는 기본적으로 인자를 1980으로 전제하고 계산을 한 다음 그 결과를 리턴합니다.
7행에서와 같이 1975라는 인자를 사용하면 기존의 기본 값은 무시하고 실제로 넘어온 값(1975)를 가지고 처리합니다.
프로그래밍 초보자 입장에서 보자면 오늘 내용은 이전에 비해 어렵습니다. 비록 본문 내용은 짧지만 충분히 설명되지 못한 부분도 있습니다. 그러나 앞으로 설명의 수준은 이 정도로 하고자 합니다. 너무 자세하게 설명할 수도 없는 것이, 만약 그렇게 한다면 PHP 게시판 하나 만들다가 1년이 다 가버릴 수도 있기 때문입니다. 이 점 널리 양해하시길 바랍니다.
PHP 기초 문법에 대해서는 이것으로 마감합니다.
드디어 다음 시간부터 실전 프로그래밍에 돌입하겠습니다.
추적추적 비 내리는 새벽에,
동주 아빠 손병목이었습니다.
이번 시간에는 PHP에서 제공하는 기본 함수가 아닌 프로그래머가 만들 수 있는 사용자 정의 함수에 대해 알아보기로 하겠습니다.
PHP의 사용자 정의 함수는 다음과 같이 구성됩니다.
function 함수명(인자1, 인자2, ...) {
명령문
return 변수 ;
}
■ 함수명은 영문을 사용합니다.
■ 인자가 필요없을 때는 괄호 안의 인자를 생략해도 됩니다.
■ 마찬가지로 return할 변수가 필요없을 때는 return 문은 생략해도 됩니다.
프로그래밍이 완전히 처음이신 분은 이해하기 좀 힘드실 겁니다. 비주얼베이직이나 C언어 같은 것을 아주 조금이라도 다뤄보신 분은 금방 이해가 됩니다. 심지어 그냥 베이직이라도 다루어보신 분이라면 이해가 쉽겠죠.(근데 도스에서 돌아가는 BASIC이 언제적 얘기지?)
먼저 다음과 같은 my_age()라는 함수를 하나 만들어 실행해 봅시다.
1: <?
2: function my_age($birth) {
3: return 2002 - $birth ;
4: }
5:
6: $age = my_age(1980) ;
7: echo "나이는 만 $age 세 입니다.";
8: ?>
2행을 보면 my_age라는 함수의 인자로 $birth가 사용되었습니다.
3행을 보면 2002에서 $birth를 뺀 값을 리턴해주는 것을 알 수 있습니다.
이상이 my_age라는 사용자 정의 함수였고,
6행에서 my_age 함수를 실행하는데 인자로 1980을 넘겼습니다. 따라서 위의 3행에서와 같이 2002에서 1980을 뺀 값이 다시 되돌아 오겠죠. 이렇게 되돌아 온 값은 $age에 저장됩니다.
7행에서 $age를 출력하고 있습니다.
참, 사용자 정의 함수는 반드시 그 함수를 사용하기 전에 만들어 두어야 합니다. 꼭!
다음 예제는 여러 개의 값을 리턴할 때 사용하는 방식입니다. 리턴할 때는 배열로 리턴하고 받을 때는 list 함수를 사용해서 받아야 합니다. 이해가 안되시더라도 'array를 이용해 배열로 리턴하고 받을 때는 list 함수를 사용해서 받는다'라고만 알아두시면 됩니다. (자주 사용하면 그냥 익히게 됩니다.)
1: <?
2: function my_age($birthyear) {
3: $re_age = 2002 - $birthyear ;
4: return array(2002, $re_age) ;
5: }
6:
7: list($year, $age) = my_age(1975);
8: echo "$year 기준 만 $age 세 입니다";
9: ?>
4행을 보면 2개의 값을 리턴합니다.
PHP에서는 원칙적으로 하나의 값만 리턴하게 되어 있습니다. 따라서 2개 이상의 값을 리턴하려면 배열 함수인 array()를 사용해 배열을 통째로 넘겨야 합니다.
그리고 받을 때는,
7행에서와 같이 list 함수를 써서 받습니다. list 함수는 각각의 변수를 마치 배열처럼 만듭니다.
(이해가 안되시면 위의 예제를 그냥 외워버리세요.^^)
다음 실습은 함수의 인자에 기본 값을 지정하는 예입니다.
1: <?
2: function my_age($year = 1980) {
3: return 2002 - $year ;
4: }
5:
6: $age1 = my_age();
7: $age2 = my_age(1975);
8: echo "처음 $age1, 나중 $age2" ;
9: ?>
2행을 보면 $year라는 변수에 기본 값으로 1980을 지정해 놓고 있습니다. 그러면,
6행에서와 같이 인자를 쓰지 않고 그냥 함수명만 호출하면 이 함수는 기본적으로 인자를 1980으로 전제하고 계산을 한 다음 그 결과를 리턴합니다.
7행에서와 같이 1975라는 인자를 사용하면 기존의 기본 값은 무시하고 실제로 넘어온 값(1975)를 가지고 처리합니다.
프로그래밍 초보자 입장에서 보자면 오늘 내용은 이전에 비해 어렵습니다. 비록 본문 내용은 짧지만 충분히 설명되지 못한 부분도 있습니다. 그러나 앞으로 설명의 수준은 이 정도로 하고자 합니다. 너무 자세하게 설명할 수도 없는 것이, 만약 그렇게 한다면 PHP 게시판 하나 만들다가 1년이 다 가버릴 수도 있기 때문입니다. 이 점 널리 양해하시길 바랍니다.
PHP 기초 문법에 대해서는 이것으로 마감합니다.
드디어 다음 시간부터 실전 프로그래밍에 돌입하겠습니다.
추적추적 비 내리는 새벽에,
동주 아빠 손병목이었습니다.
댓글 4
-
웹당
2003.04.17 10:35
-
손병목
2003.04.17 14:58
my_age(1980) 이라고 하면, my_age라는 함수를 실행하되 매개변수값으로 1980을 넘겨주라는 뜻입니다.
my_age 함수를 정의한 부분을 보면,
function my_age($birth) 라고 되어 있습니다. 즉 my_age를 호출할 때 괄호안의 값을 $birth에 저장하라는 것입니다.
3행을 보면, return 2002-$birth 라고 되어있죠? 2002-1980을 뺀 "값"(=22)을 리턴하라는 겁니다.
즉 my_age(1980)의 결과가 22라는 겁니다. 1980이라는 숫자가 22라는 숫자로 바뀐 것이 아니구요.
$age = my_age(1980) → $age = my_age(22) 가 아니라
$age = my_age(1980) → $age = 22 가 된 것입니다. -
나무스타일
2004.02.25 18:27
수고하셨습니다. 좋은 글 잘 보고 있습니다. -
이해못해
2007.09.16 11:42
전 이렇게 해 부럿 어요.
<!--
<?
function my_age($birth){
return 2007-$birth;
}$year=date(Y)."년";
$age=my_age(1982);
echo "$year 기준 만 $age 세 입니다.";
?>
-->
2: function my_age($birth) {
3: return 2002 - $birth ;
4: }
5:
6: $age = my_age(1980) ;
7: echo "나이는 만 $age 세 입니다.";
8: ?>
여기에서... 한가지 의문점이 생기는 부분이 있는데요 이 부분이 아무래도 이해가 잘 가질 않아서 질문을 하게 되었습니다
이 부분의 돌아 가는 상황은 대충 알겠는데 my_age(1980) 여기에서 my_age(1980)이 어떻게 해서 echo "나이는 만 $age 세 입니다." 이부분의 $age 에 숫자로 표현이 되는것인지....물론 리턴 함수를 이용해서 값을 서로 주고 받으면서 그 값을 출력하는것은 이해를 햇습니다 하지만 이해가 가지 않는것은 분명이 $age = my_age(1980)입니다 그러면 리턴값을 받았을때 나이는 만 my_age(22) 이렇게 되어야 되는데 어떻게 22 라는 숫자만 나오는것인지 이게 자꾸만 거슬려요 이 문제를 풀어 낼려구 3일째 이 문장만 집중적으로 쓰고 읽고 책 꺼내 보구 하는데요 이해가 잘 안가네요 죄송합니다 다시한번 가르쳐 주세요 .