English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP 기본 튜토리얼

PHP 고급 튜토리얼

PHP & MySQL

PHP 참조 매뉴얼

PHP 함수

이 튜토리얼에서는 PHP에서 자신의 사용자 정의 함수를 만드는 방법을 배울 것입니다.

PHP 내장 함수

함수는 특정 작업을 수행하는 독립적인 코드 블록입니다.

PHP는 PHP 스크립트에서 직접 호출하여 특정 작업을 수행할 수 있는 내장 함수의 컬렉션을 가지고 있습니다. 예를 들어: gettype()، print_r(),var_dump 등.

유용한 PHP 내장 함수의 전체 목록을 얻으려면 PHP 참조 부분을 확인하세요.

PHP 사용자 정의 함수

내장 함수 외에도 PHP는 자신의 함수를 정의할 수 있게 합니다. 이는 특정 작업을 수행하는 재사용 가능한 코드 팩을 만들고 주 프로그램과 분리하여 저장 및 유지보수할 수 있는 방법입니다. 함수 사용의 몇 가지 장점은 다음과 같습니다:

  • 함수는 프로그램에서 코드의 중복을 줄입니다 - 함수는 일반적으로 사용되는 코드 블록을 단일 구성 요소로 추출할 수 있습니다. 이제 스크립트의 어떤 위치에서나 이 함수를 호출하여 같은 작업을 수행할 수 있으며, 반복적으로 코드 블록을 복사하고 붙이지 않아도 됩니다.

  • 함수는 코드의 유지보수를 더 쉽게 만듭니다 - 함수를 한 번 생성하면 여러 번 사용할 수 있으므로, 함수 내에서 이루어지는 모든 변경 사항은 모든 위치에서 자동으로 반영되며, 여러 파일을 수정할 필요 없이도 변경할 수 있습니다.

  • 함수를 통해 오류를 쉽게 제거할 수 있습니다 - 프로그램을 함수로 나누면, 어떤 오류가 발생하더라도 오류가 발생한 함수와 그 위치를 정확히 알 수 있어 오류 수정이 훨씬 쉬워집니다.

  • 기능을 다른 애플리케이션에서 재사용할 수 있습니다 - 함수는 스크립트의 나머지 부분과 분리되어 있으므로, 이 함수를 포함한 php 파일을 포함하는 것만으로도 다른 애플리케이션에서 쉽게 같은 기능을 재사용할 수 있습니다.

다음 장에서는 PHP에서 자신의 함수를 쉽게 정의하는 방법을 설명할 것입니다.

함수 생성 및 호출

사용자 정의 함수 생성 및 호출의 기본 문법은 다음과 같습니다:

function functionName() { 
    //실행할 코드
}

사용자 정의 함수의 선언은 단어 function으로 시작하며, 생성할 함수 이름, 그 뒤에 괄호(), 마지막으로 함수 코드를 중괄호{} 사이에 넣습니다.

이는 사용자 정의 함수의 간단한 예제로, 오늘 날짜를 표시합니다:

<?php
//함수 정의
function whatIsToday() {
    echo "Today is " . date('l', mktime());
}
//함수 호출
whatIsToday();
?>
테스트를 보세요‹/›

주의事项:함수 이름은 알파벳이나 언더스코어로 시작해야 하며, 숫자로 시작할 수 없습니다. 또한, 더 많은 알파벳, 숫자, 언더스코어를 추가할 수 있습니다. 함수 이름은 대소문자를 구분하지 않습니다.

매개변수를 포함한 함수

함수를 정의하여 실행 시 입력 값을 받을 때 매개변수를 지정할 수 있습니다. 매개변수는 함수 내의 대체변수와 유사하게 작동하며, 실행 시 함수에 제공되는 값(매개변수)으로 대체됩니다.

function myFunc($oneParameter, $anotherParameter) { 
    //실행할 코드
}

필요에 따라 무한히 많은 매개변수를 정의할 수 있습니다. 하지만, 지정한 각 매개변수에 대해 함수 호출 시 해당 매개변수를 함수에 전달해야 합니다.

다음 예제에서 getSum() 함수는 두 개의 정수 값을 매개변수로 받아 두 값을 더한 후 브라우저에서 결과를 표시합니다.

<?php
//함수 정의
function getSum($num1, $num2{
  $sum = $num1 + $num2;
  echo "두 개의 숫자 $num1와 $num2의 합은 : $sum";
}
 
//함수 호출
getSum(10, 20);
?>
테스트를 보세요‹/›

위 코드의 출력은 다음과 같습니다:

두 개의 숫자10합20의 합은 : 30

ヒント:매개변수는 함수에 전달하는 값이며 매개변수는 함수 내에서 매개변수를 받는 변수입니다. 하지만 일반 사용에서는 이 두 용어가 교환될 수 있습니다. 즉 매개변수는 자변수입니다.

선택 사항 매개변수와 기본 값을 포함한 함수

선택 사항 매개변수를 포함한 함수를 생성할 수도 있습니다. - 매개변수 이름을 입력한 후 등호 (=)을 추가하고 기본 값을 따라 예제와 같이 입력하면 됩니다.

<?php
//함수 정의
function customFont($font, $size=1.5{
    echo "<p style=\"font-family: $font; font-size: {$size}em;">Hello, world!/p>";
}
 
//함수 호출
customFont("Arial", 2);
customFont("Times", 3);
customFont("Courier");
?>
테스트를 보세요‹/›

customFont()의 세 번째 호출은 두 번째 매개변수를 포함하지 않습니다. 이는 PHP 엔진이 $size 매개변수의 기본 값을 사용하도록 유도합니다, 즉1.5.

함수에서 반환 값

함수는 return 문을 사용하여 호출하는 스크립트에 값을 반환할 수 있습니다. 이 값은 배열과 객체를 포함한 모든 타입일 수 있습니다.

<?php
//함수 정의
function getSum($num1, $num2{
    $total = $num1 + $num2;
    return $total;
}
 
//반환 값 출력
echo getSum(5, 10); // 출력: 15
?>
테스트를 보세요‹/›

함수는 여러 값을 반환할 수 없습니다. 그러나 다음 예제와 같이 배열을 반환하여 유사한 결과를 얻을 수 있습니다.

<?php
//함수 정의
function divideNumbers($dividend, $divisor){
    $quotient = $dividend / $divisor;
    $array = array($dividend, $divisor, $quotient);
    return $array;
}
 
//변수를 배열로 할당
list($dividend, $divisor, $quotient) = divideNumbers(10, 2);
echo $dividend;  // 출력: 10
echo $divisor;   // 출력: 2
echo $quotient;  // 출력: 5
?>
테스트를 보세요‹/›

함수에 참조로 매개변수 전달

PHP에서 함수에 매개변수를 전달하는 방법은 두 가지가 있습니다: 값 전달과 참조 전달입니다. 기본적으로 함수 매개변수는 값 전달로 설정되어 있으므로, 함수 내에서 매개변수 값이 변경되면 외부에 영향을 미치지 않습니다. 그러나 함수가 매개변수를 변경하도록 허용하려면 참조 전달이 필요합니다.

매개변수를 전달하는 방법은 함수 정의에서 매개변수 이름 앞에 약한(&) 기호를 추가하는 것입니다. 다음 예제와 같이 보입니다:

<?php
/* 숫자와 함께 곱하는 함수 정의
하고 새 값을 반환합니다 */
function selfMultiply(&$number){
    $number *=$number;
    return $number;
}
 
$mynum = 5;
echo $mynum; // 출력: 5
 
selfMultiply($mynum);
echo $mynum; // 출력: 25
?>
테스트를 보세요‹/›

변수 범위 이해

PHP 스크립트의 어느 위치에서나 변수를 선언할 수 있습니다. 그러나 선언된 위치는 변수가 PHP 프로그램에서 사용하거나 접근할 수 있는 범위를 결정합니다. 이 접근성은변수 범위.

기본적으로, 함수 내에서 선언된 변수는 지역 변수로, 함수 외부에서 접근하거나 처리할 수 없습니다. 다음 예제와 같이 보입니다:

<?php
//함수 정의
function test(){
    $greet = "Hello World!";
    echo $greet;
}
 
test(); // 출력: Hello World!
 
echo $greet; //정의되지 않은 변수 오류 발생
?>
테스트를 보세요‹/›

또한, 함수 내부에서 외부 변수에 접근하려고 시도하면 정의되지 않은 변수 오류가 발생합니다. 다음 예제와 같이 보입니다:

<?php
$greet = "Hello World!";
 
//함수 정의
function test(){
    echo $greet;
}
 
test();  //정의되지 않은 변수 오류 생성
 
echo $greet; // 출력: Hello World!
?>
테스트를 보세요‹/›

위의 예제에서 볼 수 있듯이, 함수 내에서 선언된 변수는 외부에서 접근할 수 없으며, 반대로 외부에서 선언된 변수는 함수 내에서 접근할 수 없습니다. 이 분리는 함수 내 변수가 메인 프로그램의 변수에 의해 영향을 받을 가능성을 줄입니다.

ヒント:다른 함수에서 동일한 이름의 변수를 사용할 수 있습니다. 왜냐하면 지역 변수는 그를 선언한 함수 만이 인식할 수 있기 때문입니다.

global 키워드

어떤 경우에는 메인 프로그램에서 변수를 함수에 입력하거나 반대로 입력해야 할 때가 있습니다. 이 경우 함수 내의 변수 앞에 global 키워드를 사용할 수 있습니다. 이 키워드는 변수를 전역 변수로 변환하여 함수 내 및 외부에서 모두 보이거나 접근할 수 있도록 합니다. 다음 예제와 같이 보입니다:

<?php
$greet = "Hello World!";
 
//함수 정의
function test(){
    global $greet;
    echo $greet;
}
 
test(); // 출력: Hello World!
echo $greet; // 출력: Hello World!
 
//변수에 새 값을 할당합니다
$greet = "Goodbye";
 
test(); // 출력: Goodbye
echo $greet; // 출력: Goodbye
?>
테스트를 보세요‹/›

다음에서PHP 클래스와 객체이 장에서는可见성과 접근 제어에 대한更多信息을 알 수 있습니다.

재귀 함수 생성

재귀 함수는 조건을 만족시키기 위해 여러 번 자신을 호출하는 함수입니다. 재귀 함수는 일반적으로 복잡한 수학 계산이나 깊이 잠재이며 구조를 처리하는 데 사용됩니다. 예를 들어, 깊이 잠재 이진수组的 모든 요소를 출력하는 것입니다.

이 예제는 재귀 함수의 작동 방식을 보여줍니다.

<?php
//재귀 함수 정의
function printValues($arr) {
    global $count;
    global $items;
    
    //$arr를 배열로 확인
    if(!is_array($arr)){
        die("ERROR: Input is not an array");
    }
    
    /*
        배열을 순회하며, value 자체가 배열이면 재귀 호출
        함수는 발견된 값을 출력 요소 배열에 추가합니다
        각 발견된 값에 대해 카운터를 증가시킵니다1
    */
    foreach($arr as $a){
        if(is_array($a)){
            printValues($a);
        } else{
            $items[] = $a;
            $count++;
        }
    }
    
    //배열에서 총 카운트와 값을 반환
    return array('total' => $count, 'values' => $items);
}
 
//내부 배열 정의
$species = array(
    "birds" => array(
        "Eagle"
        "Parrot"
        "Swan"
    ),
    "mammals" => array(
        "Human"
        "cat" => array(
            "Lion"
            "Tiger"
            "Jaguar"
        ),
        "Elephant",
        "Monkey"
    ),
    "reptiles" => array(
        "snake" => array(
            "Cobra" => array(
                "King Cobra"
                "Egyptian cobra"
            ),
            "Viper",
            "Anaconda"
        ),
        "Crocodile",
        "Dinosaur" => array(
            "T-rex",
            "Alamosaurus"
        )
    )
);
 
//내부 배열에서 값 계산 및 출력
$result = printValues($species);
echo $result['total'] . ' value(s) found: ';
echo implode(', ', $result['values']);
?>
테스트를 보세요‹/›

주의事项:재귀 함수를 작성할 때 주의해야 합니다. 코드가 올바르지 않게 작성되면 함수 호출의 무한 루프가 발생할 수 있습니다.