본문 바로가기
그 외 프로그래밍 언어/php

php, 함수 function

by Dreaming Coder 2022. 8. 4. 20:44

 


 

생활코딩 php 강의를 보면서 혼자만 대충 알아볼 수 있게 정리하는 포스팅,

이번에는 함수에 대해서 공부해보겠습니다.

 

 

 

지난 포스트

 

php, 조건문과 반복문 실습 (feat. scandir 함수)

생활코딩 php 강의 영상들을 보면서, 조건문과 반복문을 활용해서 웹사이트의 글 목록을 정리하는 코드를 만들어봅시다. 그런데 여기서 한 가지 알아둬야 할 점은, 실제로 웹사이트를 만들 때에

gogogameboy.tistory.com

 

 

 

함수(function)란?

 

어떤 데이터가 전달(IN)이 되면, 그것에 응해서 함수 내부의 알고리즘을 거쳐 어떤 결과값을 돌려주는(OUT) 기능을 뜻합니다.

함수의 종류는 아래의 두가지 뿐입니다.

 

 

 

내부(Built-in) 함수

php에 기본으로 내장되어 있는 함수

예) strlen, nl2br, var_dump, isset 등등..

 

사용자(User) 정의 함수

사용자(우리)가 스스로 작성한 함수

 

 

 

함수 만들기 예고

 

 

이 영상에서와 같이 자주 반복해서 사용하는 코드를 함수로 만들어둬서 사용하면 코드의 중복도 줄일 수 있고, 눈으로 보기에도 더 깔끔한 코드를 만들 수 있습니다.

 

 

 

함수의 형식

 

 

<?php
function basic(){
	print("Lorem ipsum dolor1<br>");
	print("Lorem ipsum dolor2<br>");
}

basic();
?>

위의 코드와 같이 사용자 정의 함수를 만들고 호출할 수 있습니다.

 

 

 

<?php
basic();

function basic(){
	print("Lorem ipsum dolor1<br>");
	print("Lorem ipsum dolor2<br>");
}
?>

참고로 이렇게 함수를 실행하는 basic( )이 상단에 있고, 그 아래에 함수를 정의하는 코드가 온다고 하더라도 출력되는 결과는 같습니다.

함수를 배우기 이전에는 항상 코드는 위에서 아래로 차례대로 한 줄씩 실행이 됐었는데, 여기서는 예외입니다.

 

처음 배우는 초보자들에게는 이런 것도 하나하나 친절하게 설명을 해줘야 하는데, 예전에 제가 다녔던 학원에서는 이런 특성을 딱히 설명해주지 않아서 머릿속이 복잡해지고 패닉에 빠졌던 경험이 있었네요. ㅎㅎ

 

 

 

 

<?php
function sum($num1, $num2){
	print($num1+$num2);
	print("<br>");
}

sum(2,4);
sum(4,6);
?>

이렇게 함수에 값을 입력해서 입력한 값에 따라 다른 결과를 출력하는 함수를 만들 수도 있습니다.

이때 함수를 정의할 때 괄호( ) 안에 넣었던 변수 $num1과 $num2를 매개변수parameter라고 하고,

함수를 실행할 때 괄호( ) 안에 넣었던 2와 4, 4와 6 같이 함수로 전달되는 데이터를 인수argument라고 합니다.

 

 

 

 

<?php
function sum($num1, $num2){
	return $num1+$num2;
}

print(sum(2,4));
file_put_contents('result.txt', sum(2,4));
?>

그리고 return이라는 코드로 값을 반환할 수도 있습니다.

반환된 값을 어딘가에 전송을 한다던지, 파일로 저장을 한다던지 할 수 있습니다.

 

 

 

함수의 활용

 

 

위의 생활코딩 강의 영상과는 또 다른 내용의 함수 예제 코드를 아래에서 한번 살펴보고 가겠습니다.

 

 

 

<?php
// $str에 16바이트가 넘는 문자열을 넣어보았다.
$str = 'abcd1234efgh5678i';
// $byte에 최대 허용 가능한 바이트 수를 입력
$byte = 16;
// checkByte() 함수에 $str과 $byte의 값을 인자로 넣고 그 결과로 반환된 값을 $flag에 넣는다.
$flag = checkByte($str, $byte);
if($flag){
    // $flag가 true일 경우 이것을 출력
    echo '패스워드가 설정되었습니다.';
}else{
    // $flag가 false일 경우 이것을 출력
    echo $byte.nl2br('Byte를 초과하였습니다.
    패스워드를 다시 설정해주세요.');
}
// checkByte() 함수의 정의 시작
function checkByte($str, $byte){
    // strlen() 함수를 이용해서 $str의 바이트 수를 $strlen에 할당한다.
    $strlen = strlen($str);
    // $strlen과 $byte의 값을 비교한다.
    if($strlen <= $byte){
        // $strlen이 $byte의 값보다 작으면 true를 반환
        return true;
    }
    // $strlen이 $byte의 값보다 크면 false를 반환
    return false;
}
?>

checkByte라는 사용자 정의 함수를 만들어서 사용하는 예제 코드입니다.

인수로 넘겨받은 $str에 할당된 문자열은 php 내부 함수인 strlen( )에서 바이트 수를 검사하고, 결과를 $strlen에 할당합니다.

if문에서는 $strlen과 $byte를 비교하여 지정된 바이트 이하일 경우에는 return으로 true를 돌려줍니다.

반대로 지정 바이트를 초과할 경우에는 false를 돌려줍니다.

 

 

 

 

php, 문자 개수 세어주는 함수와 자동 줄바꿈 함수

저 혼자 공부할 목적으로 쓰는 글이기 때문에 함수가 무엇인지에 대한 설명 같은 건 생략하겠습니다. 지난 포스트 php의 URL 파라미터 URL을 통해서 입력 값을 전달받고 그것을 화면에 출력하는 방

gogogameboy.tistory.com

위의 예제 코드에서 사용된 php 내부 함수인 strlen( )과 nl2br( )은 이전에 위의 포스트에서 나온 적이 있었습니다.

 

 

 


이 글이 도움이 됐다면 하단의 공감 버튼을 꾹 눌러서
빨간 하트로 만들어주세요.
지인에게 보여주고 싶은 글이었다면
공감 버튼 옆을 클릭해서 SNS 공유해주세요.
댓글은 블로그 운영에 큰 힘이 됩니다.

 


 


댓글