테스트 사이트 - 개발 중인 베타 버전입니다

[입문자용 강좌] 함수 1

· 18년 전 · 3879 · 27
[함수1]
# 본내용은 스킨제작을 목적으로 하는 분들을 위한 입문자용 기본 강좌입니다.
# 입문자가 쉽게 php를 느낄수 있도록 되도록 간추려서 쉽게 구성한 강좌입니다.
# 입문자가 아니면 보실 필요가 없습니다.
# 강좌의 순서는 입문자가 쉽게 와닿을수 있도록 임의로 조정했습니다.
# 강좌는 누구나 읽고 사용할수 있지만, 다른 책의 내용으로 포함될수 없습니다.


제어구조를 진행하다가 갑자기 왜 함수로 갔는지 의아해 하시는 분들이 있을것입니다.
제어구조에 대한 설명이 끝난 것은 아니지만
함수라는 것의 이해가 먼저 선행되어야
제어구조를 좀 더 쉽게 풀어나갈수 있을 것 같아서
함수에 대한 기본적인 것을 먼저 언급한후
다시 제어구조로 돌아가고
그다음에 함수에 대한 것을 마무리 할것입니다.

1. 함수란?

함수라는 것은 프로그램상에서 자주 사용되는 동작, 처리 부분을
미리 따로 정의 해 놓음으로서
복잡한 반복 과정없이 간단하게 호출하여 사용할수 있도록 만든 것입니다.
함수에 따라서 true, false 또는 특정값을 돌려주는 것이 있고
동작, 처리만 하고 값을 돌려주지 않는 것도 있습니다.

함수의 규칙이 어떻고
어떻게 만들어서 어떻게 사용하냐 의 사용자 정의함수 부분은 이후에 다룰것이며
여기에서는 아주 자주 사용되고 꼭 알아야할 php에서 제공하는 유용한 함수 몇가지를
설명합니다.


2. 많이 사용하는 함수

1) echo

먼저 echo 라는 함수를 설명하기 이전에
php메뉴얼의 함수 검색에서
함수 설명보는 부분을 설명합니다.

먼저, http://kr.php.net 에 접속합니다.
상단 메뉴부분에 검색할수 있는 인풋 박스가 있습니다.
그곳에 echo 라고 입력을 하고 엔터를 칩니다.

echo
(PHP 3, PHP 4, PHP 5 )
echo -- 하나 이상의 문자열을 출력합니다.

설명
void echo ( string arg1 [, string argn...])


모든 인자를 출력합니다.
echo()은 실제 함수가 아니기에 (언어 구조입니다) 괄호를 사용할 필요가 없습니다. 실제로, 둘 이상의 인자를 사용할 때는 괄호를 사용해서는 안됩니다.



이런식으로 함수 설명 페이지가 나옵니다.

(PHP 3, PHP 4, PHP 5 )
이부분은 어떤 php버전에서 사용가능한지에 대해서 보여줍니다.
이것 같은 경우는 php3부터 그이후의 버전에서 모두 사용할수 있다는 뜻입니다.

echo -- 하나 이상의 문자열을 출력합니다.
이부분은 간략한 함수 설명 부분입니다.

void echo ( string arg1 [, string argn...])
이부분은 맨앞에 void라는 것이 있는데
이것은 리턴값이 없는 함수라는 뜻입니다.

다른 함수인경우에는 bool, int, string, array, mixed 등등의 값들이 올수 있습니다.
각각 참거짓, 숫자형, 문자결합형, 배열, 혼합형 등이 리턴 된다는 뜻입니다.
여러 가지 함수를 검색해봄으로서 어떤 리턴값이 있는지 확인해봅니다.

( string arg1 [, string argn...])
이부분은 함수를 사용할 때 몇 개의 인자를 어떤 형태로 받을지를 보여줍니다.
string arg1은 문자결합형 인자를 하나 받는다는 뜻입니다.
,를 구분자로 추가해 나가며 그 개수대로 인자를 지정된 형태를 주어야 합니다.
[, string argn...]은 인자로서 넣어도 되고 안넣어도 되는 경우에
다음과 같이 표현합니다.

그 이후에는 상세설명이 나오게 됩니다.

매뉴얼을 잘 확인하고 이해하는 것만으로도
많은 발전이 있습니다.


그럼, 본격적으로 echo() 라는 함수를 설명하면
echo() php에서 html로 확인가능하도록 출력해주는 역할을 합니다.
php상에서 어떤 작업을 하더라도
echo나 비슷한 출력함수를 사용하여 출력하지 않으면
웹페이지에 나타나지 않습니다.
즉 웹페이지에 드러나게끔 해주는 함수입니다.

위에 매뉴얼 부분에서도 설명이 있듯이
다른 함수와는 다르게 ()를 사용하지 않아도 됩니다.
<?php

echo "우리나라는 좋은 나라입니다. <br>“;

echo '우리나라는 좋은 나라입니다. <br>';

echo ("우리나라는 좋은 나라입니다. <br>");

echo ('우리나라는 좋은 나라입니다. <br>');

?>

위예제의 결과는 모두 같은 결과의 내용이 네번 출력되게 됩니다.
모두 맞는 사용법입니다.


#### 참고사항 ####
“ 와 ‘ 의 차이에 대해서 설명하고자 합니다.
둘다 문자열을 감싸주는 역할을 하는데
대부분 비슷하지만 결정적으로 중요한 한가지 역할이 다릅니다.
다음의 예제를 확인합니다.
<?php

$a = '안녕하세요?';

echo "$a 우리나라는 좋은 나라입니다. <br>“;

echo '$a 우리나라는 좋은 나라입니다. <br>';

echo ("$a 우리나라는 좋은 나라입니다. <br>");

echo ('$a 우리나라는 좋은 나라입니다. <br>');

?>

위의 예제는 모두 같은 결과를 출력할까요?
첫 번째와 세 번째는 안녕하세요? 우리나라는 좋은 나라입니다.
라고 출력됩니다.
두 번째와 네 번째는 $a 우리나라는 좋은 나라입니다.
라고 출력됩니다.

느낌이 오십니까?
쌍따움표(“)로 감싸게 되면 php가 내부에 변수가 있는지 확인하여 그값을 돌려받아서
출력합니다.
홑따움표(‘)로 감싸게 되면 전혀 변환하지 않고 있는 그대로를 출력합니다.
이차이는 아주 중요한 차이이며
실수로 간과할수도 있는 부분이니 잘 새기도록 합니다.

2) isset

isset

(PHP 3, PHP 4, PHP 5 )isset -- 존재하는 변수인지 확인합니다.

설명
bool isset ( mixed var [, mixed var [, ...]])


var가 존재하면 TRUE를, 존재하지 않는 다면 FALSE를 반환합니다.

isset 이라는 함수는
현재 부분 이전에서
인자로 받은 변수가 정의 되었는지 확인하여
정의되었으면 true, 정의되어있지 않으면 false를 반환합니다.

설명앞에 bool 이라고 되었는 것이 보일것입니다.
아까도 설명했지만 bool이라고 되어있으면
함수의 실행결과로 리턴값을 돌려주는데 그 값이 true 나 false 라는 뜻입니다.

이 isset 이라는 함수는 해당 변수에 값이 있던 없던 간에
$a = 값;
형태로 이전에 정의되어있으면 true를 반환합니다.

<?php

$a = 5;

if (isset($a)){//$a라는 변수가 정의되어 있으면?

echo '상위에서 $a 라는 변수가 정의 되어있습니다.';
}
else if (!isset($a)){//$a라는 변수가 정의되어 있지 않으면?

echo '상위에서 $a 라는 변수가 정의 되어 있지 않습니다.‘;
}

if (isset($b)){//$b라는 변수가 정의되어 있으면?

echo '상위에서 $b 라는 변수가 정의 되어있습니다.';
}
else if (!isset($b)){//$b라는 변수가 정의되어 있지 않으면?

echo '상위에서 $b 라는 변수가 정의 되어 있지 않습니다.‘;
}

?>

첫 번째 if else 구문은 정의된 변수 $a 대해 정의되어있는지 아닌지를 비교하여
해당 문자열을 출력하도록 한것입니다.

두 번째 if else 구문은 정의되지 않은 변수 $b 에 대해 정의되어있는지 아닌지를 비교하여
해당 문자열을 출력하도록 한것입니다.

#### 참고사항
php에서 !의 의미?
이전에 연산자에 대해 배울때
== 같다라는 의미의 연산자와
!= 같지 않다라는 의미의 연산자를 &#48419;을 것입니다.

!은 반대의 값을 되돌려 줍니다.
함수 앞에서 !을 붙이게 되면
함수의 리턴값의 반대의 값을 돌려주게 됩니다.
즉 리턴값이 true 이면 false를
false 이면 true를 돌려주게 됩니다.

따라서 위조건문 예제에서 보면
if 문은 조건절이 참일 경우에만 실행된다고 배웠으므로
else if (!isset($b)){
이부분은 먼저 isset($b)를 통해서 존재하는지 여부를 판단하고,
정의되지 않았으니까 함수의 리턴값은 false 입니다.
그런데 그앞에 !가 있으니까
다시 반대의값을 돌려주게 됩니다. true
결과적으로 if의 조건문이 참이므로
echo '상위에서 $b 라는 변수가 정의 되어 있지 않습니다.‘;
이 구문이 실행되게 되는 것입니다.

3) empty

empty

(PHP 3, PHP 4, PHP 5 )empty -- 변수가 비어있는지 검사합니다.

설명
bool empty ( mixed var)


empty()는 var가 비어있지 않고 제로가 아닌 값이라면 FALSE를 반환합니다. 즉, "", 0, "0", NULL, FALSE, array(), var $var, 비어있는 프로퍼티의 객체를 비어있는 것으로 판단합니다. var가 비어있다면 TRUE를 반환합니다.

설명이 조금 어렵게 나와있는데 다시 제 설명을 들어보기 바랍니다.

empty 영어로도 ‘빈’, ‘비어있는’을 뜻하는 형용사입니다.
즉 인자로 넘겨지는 변수가
비어있는지 아닌지를 판단해서
비어 있으면 true, 비어있지 않으면 false를 돌려줍니다.
비어있다라고 판단되는 값에는
1. 상위에 변수 자체가 저의되어 있지 않은 경우, 즉 !isset(변수)가 참인 경우
2. 변수는 정의 되어 있되 ‘’ 거나, “” 거나, NULL이거나, false 이거나, 0 이거나, ‘0’ 이거나, “0”일 경우
3. 배열이나 객체는 선언되어 있되, 배열에 값을 아무것도 할당하지 않은 경우

자, 다음의 예제를 확인합니다.
<?php

$a = "";//변수는 정의하되 아무값도 넣지 않음
$b = '';//변수는 정의하되 아무값도 넣지 않음
$c = NULL;//변수는 존재하되 어떤 값도 없음
$d = false;//변수에 거짓에 해당하는 false를 대입
$e = 0;//변수에 숫자 0을 대입
$f = '0';//변수에 수 문자열 0을 대입
$g = "0";//변수에 수 문자열 0을 대입
$h = Array();// 배열만 선언

if (empty($a)) echo '$a 는 비어있습니다. <br>';
if (empty($b)) echo '$b 는 비어있습니다. <br>';
if (empty($c)) echo '$c 는 비어있습니다. <br>';
if (empty($d)) echo '$d 는 비어있습니다. <br>';
if (empty($e)) echo '$e 는 비어있습니다. <br>';
if (empty($f)) echo '$f 는 비어있습니다. <br>';
if (empty($g)) echo '$g 는 비어있습니다. <br>';
if (empty($h)) echo '$h 는 비어있습니다. <br>';
if (empty($i)) echo '$i 는 비어있습니다. <br>';

?>

위의 예제에서 보면 알수 있듯이 모두 비었다고 나옵니다.

#### 참고사항
변수형을 설명할 때 NULL 에 대해서 설명하지 않았는데
이것은 완전이 비어있다라는 뜻입니다.
‘’ 나 “” 이것과는 다릅니다.
이 부분을 설명하기 위해선 복잡한 개념이 들어가야 하는데
그부분은 생략하고
간편하게
NULL 은 완전히 빈값이되 ‘’ 나 “”와는 다르다
정도로 숙지하도록 합니다.

4) 이외에는 아주 유용한 미리 정의된 함수가 많지만,
그것들은 앞으로 나올때마다 조금씩 다루기로 하고 이번 강좌는 여기서 마칩니다.<div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:12:10 PHP & HTML에서 이동 됨]</div>

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 27개

18년 전
설 잘쉬시고 복 많이 받으세요 ^^
네 서기님도 명절 잘 보내세요
18년 전
좋은강좌를 바쁘다 보니 이제야 봤습니다.

매번 감사합니다.^^
좋은자료 감사합니다
18년 전
[http://www.sir.co.kr/data/member/db/dbckdghk.gif][http://www.sir.co.kr/data/member/db/dbckdghk.gif][http://www.sir.co.kr/data/member/db/dbckdghk.gif][http://www.sir.co.kr/data/member/db/dbckdghk.gif][http://www.sir.co.kr/data/member/db/dbckdghk.gif][http://www.sir.co.kr/data/member/db/dbckdghk.gif][http://www.sir.co.kr/data/member/db/dbckdghk.gif][http://www.sir.co.kr/data/member/db/dbckdghk.gif]
18년 전
고수님들의 발자취나 딸아가야죠 ~^^

강좌 감합니다.
많은도움됐습니다..
감사합니다..

게시글 목록

번호 제목
11111
11108
11107
11105
11101
11099
11095
11093
24843
11065
11063
11059
29001
11054
28999
11050
28998
28956
11044
11023
11004
28946
10993
10990
28903
10984
24842
28900
10982
10978
28899
10974
10970
24831
24830
10967
10965
10963
10956
10954
10950
10946
24818
10943
28885
24813
10940
10927
10925
10920
10916
10914
10913
10908
10905
10904
10899
24803
28882
10898
28878
28877
24802
24801
24800
24799
10893
10892
24797
24794
10891
28871
28870
10881
10872
10870
28868
10868
10866
28862
10864
28861
10863
28860
10862
28859
28858
10861
10859
28856
10857
28854
10856
28853
28852
28851
10855
28850
10854
28849