English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 PHP에서 자신의 사용자 정의 함수를 만드는 방법을 배울 것입니다.
함수는 특정 작업을 수행하는 독립적인 코드 블록입니다.
PHP는 PHP 스크립트에서 직접 호출하여 특정 작업을 수행할 수 있는 내장 함수의 컬렉션을 가지고 있습니다. 예를 들어: gettype()، print_r(),var_dump 등.
유용한 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 키워드를 사용할 수 있습니다. 이 키워드는 변수를 전역 변수로 변환하여 함수 내 및 외부에서 모두 보이거나 접근할 수 있도록 합니다. 다음 예제와 같이 보입니다:
<?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']); ?>테스트를 보세요‹/›
주의事项:재귀 함수를 작성할 때 주의해야 합니다. 코드가 올바르지 않게 작성되면 함수 호출의 무한 루프가 발생할 수 있습니다.