Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP 사용자 정의 함수

<시간/>

소개

PHP에는 수학, 문자열, 날짜, 배열 함수 등과 같은 많은 내장 함수가 있습니다. 특정 요구 사항에 따라 함수를 정의하는 것도 가능합니다. 이러한 기능을 사용자 정의 기능이라고 합니다.

함수는 특정 작업을 수행하는 재사용 가능한 문의 블록입니다. 이 블록은 function 키워드로 정의되며 알파벳이나 밑줄로 시작하는 이름이 지정됩니다. 이 함수는 프로그램 내 어디에서나 여러 번 호출할 수 있습니다.

구문

//define a function
function myfunction($arg1, $arg2, ... $argn)
{
   statement1;
   statement2;
   ..
   ..
   return $val;
}
//call function
$ret=myfunction($arg1, $arg2, ... $argn);

함수는 선택적이지만 임의의 수의 인수로 정의할 수 있습니다. 그러나 호출하는 동안 동일한 수의 인수를 제공해야 합니다. 함수의 본문에는 조건문, 루프 등과 같은 유효한 PHP 코드가 포함될 수 있습니다(다른 함수나 클래스도 함수 내부에 정의될 수 있음). 블록에서 명령문을 실행한 후 프로그램 제어는 리턴으로 펑션 블록의 마지막 명령문이 존재하는지 여부에 관계없이 호출된 위치로 되돌아갑니다. return 문 앞의 표현식은 해당 값을 호출 환경에 반환합니다.

사용자 정의 함수 예

다음 예에서는 usr 정의 함수 sayhello()

에 대한 정의 및 호출을 보여줍니다.

예시

<?php
//function definition
function sayHello(){
   echo "Hello World!";
}
//function call
sayHello();
?>

이 스크립트는 명령줄에서 실행할 때 다음 결과를 생성합니다 -

출력

Hello World!

인수 있는 함수

다음 예에서 함수는 두 개의 형식 인수로 정의됩니다.

예시

<?php
function add($arg1, $arg2){
   echo $arg1+$arg2 . "\n";
}
add(10,20);
add("Hello", "World");
?>

출력

그러면 다음과 같은 결과가 생성됩니다. -

30
PHP Warning: A non-numeric value encountered in line 3

두 번째 호출에서는 두 개의 문자열 값이 함수 인수로 제공됩니다. PHP는 문자열에 대해 + 연산자를 지원하지 않으므로 경고가 발생합니다.

함수 반환

다음 예제의 사용자 정의 함수는 제공된 인수를 처리하고 호출 환경에 값을 반환합니다.

예시

<?php
function add($arg1, $arg2){
   return $arg1+$arg2;
}
$val=add(10,20);
echo "addition:". $val. "\n";
$val=add("10","20");
echo "addition: $val";
?>

출력

그러면 다음과 같은 결과가 생성됩니다. -

addition:30
addition:30

두 번째 호출에서 인수가 문자열인 경우에도 PHP는 인수를 정수로 강제 변환하고 더하기를 수행합니다.

기본 인수 값이 있는 함수

함수를 정의하는 동안 인수의 기본값이 할당될 수 있습니다. 함수 호출 시 해당 인수에 값을 지정하지 않으면 이 기본값이 함수 내부 처리에 사용됩니다. 다음 예에서는 기본값을 갖는 인수로 함수를 정의합니다.

예시

<?php
function welcome($user="Guest"){
   echo "Hello $user\n";
}
//overrides default
welcome("admin");
//uses default
welcome();
?>

출력

그러면 다음과 같은 결과가 생성됩니다. -

Hello admin
Hello Guest

두 번째 호출에서는 값을 전달하지 않고 함수를 호출합니다. 이 경우 사용자 인수는 기본값을 사용합니다.

변수 개수가 있는 함수

가변 개수의 인수를 수신할 수 있는 기능을 정의하는 것이 가능합니다. 함수 정의에서 형식 인수의 이름은 ... 접두사로 시작됩니다. 토큰. 다음 예제에는 인수로 주어진 숫자 목록을 추가하는 add() 함수가 있습니다.

예시

<?php
function add(...$numbers){
   $ttl=0;
   foreach ($numbers as $num){
      $ttl=$ttl+$num;
   }
   return $ttl;
}
$total=add(10,15,20);
echo "total= $total\n";
echo "total=". add(1,2,3,4,5). "\n";
?>

출력

그러면 다음과 같은 결과가 생성됩니다. -

total= 45
total=15

func_get_args()를 사용하여 함수에 전달된 인수 목록을 얻을 수도 있습니다. 기능. PHP 루프를 실행하여 전달된 인수 목록의 각 값을 탐색할 수 있습니다. 이 경우 함수 정의에 형식 인수가 없습니다.

예시

<?php
function add(){
   $numbers=func_get_args();
   $ttl=0;
   foreach ($numbers as $num){
      $ttl=$ttl+$num;
   }
   return $ttl;
}
$total=add(10,15,20);
echo "total= $total\n";
echo "total=". add(1,2,3,4,5). "\n";
?>

출력

그러면 다음과 같은 결과가 생성됩니다. -

total= 45
total=15

다른 함수 내의 함수

함수는 다른 함수의 본문 블록 내부에 정의될 수 있습니다. 단, 외부 함수가 호출되기 전에는 내부 함수를 호출할 수 없습니다.

예시

<?php
function hello(){
   echo "Hello\n";
   function welcome(){
      echo "Welcome to TutorialsPoint\n";
   }
}
//welcome();
hello();
welcome();
?>

hello() 전에 wlcome()를 호출하려면 주석을 제거하십시오. 다음 오류 메시지는 프로그램을 중지합니다 -

Fatal error: Uncaught Error: Call to undefined function welcome()

출력

줄을 주석 처리하고 다시 실행하십시오.

Hello
Welcome to TutorialsPoint

재귀 함수

자신을 호출하는 함수를 재귀 함수라고 합니다. 자신을 무조건 호출하면 무한 루프가 생성되고 스택이 가득 차서 메모리 부족 오류가 발생합니다. 다음 프로그램은 factorial() 함수를 재귀적으로 호출합니다.

예시

<?php
function factorial($n){
   if ($n < 2) {
      return 1;
   } else {
      return ($n * factorial($n-1));
   }
}
echo "factorial(5) = ". factorial(5);
?>

출력

factorial(5) = 120