함수 정의
유효한 함수 이름은 문자나 밑줄로 시작하고 그 뒤에 문자, 숫자, 밑줄이 옵니다.
함수 이름은 다음과 같습니다. 구분하지 마십시오(사실 PHP의 함수 이름, 메소드 이름 및 클래스 이름은 대소문자를 구분할 수 있습니다).
함수를 조건부로 호출하지 않는 한 함수를 호출하기 전에 정의할 필요는 없습니다.
PHP는 함수 오버로딩을 지원하지 않으며, 선언된 함수를 정의 해제하거나 재정의하는 것이 불가능합니다.
<?php Test(); # function test. function test() { echo 'function test.'; }
함수 매개변수
1. 값 전달
in 함수 내부적으로 매개변수 값을 변경해도 함수 외부의 매개변수 값에는 영향을 미치지 않습니다:
<?php $i = 1; add($i); echo $i; # 1 function add($test) { $test++; }
2. 참조로 전달
Keep 매개변수의 값은 함수 내부와 외부에서 일관됩니다. 참조로 전달하려면 함수 정의의 매개변수 앞에 & 기호를 추가하면 됩니다:
<?php $i = 1; add($i); echo $i; # 2 function add(&$test) { $test++; }
3. 매개변수의 가변 개수
#🎜 🎜#PHP는 다양한 수의 매개변수를 지원합니다. 함수를 정의할 때 나열된 매개변수는 실제로 최소 매개변수일 뿐입니다. 호출 시 여러 매개변수가 허용되지만 추가 매개변수는 무시됩니다.function add($a, $b) { return $a + $b; } echo add(1,2,5); # 3PHP 5.5 및 이전 버전에서 처리해야 하는 경우 매개변수 개수가 불확실한 경우 다음 함수를 사용할 수 있습니다. func_num_args() — 함수에 전달된 매개변수 개수를 반환합니다. func_get_arg() — 지정된 매개변수를 반환합니다. # 🎜🎜#
func_get_args() — 매개변수 목록을 배열로 반환
<?php function func() { $argc = func_num_args(); $argv = func_get_args(); switch ($argc) { case 0: echo "没有参数。<br />"; break; case 1: echo "只有1个参数。它是:" . func_get_arg(0) . "。<br />"; break; case 2: echo "有2个参数。它们是:" . func_get_arg(0) . "," . func_get_arg(1) . "。<br />"; break; default: echo "超过2个参数。它们是:"; print_r($argv); break; } } func(); # 没有参数。 func(1); # 只有1个参数。它是:1。 func(1,2); # 有2个参数。它们是:1,2。 func(1,2,3,4,5); # 超过2个参数。它们是:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
PHP 5.6 이상에서는 가변 개수의 변수가 다음으로 구현됩니다... 구문 매개변수 목록: #🎜 🎜#
function sum(...$numbers) { $acc = 0; foreach ($numbers as $n) { $acc += $n; } return $acc; } echo sum(1, 2, 3, 4); # 10
Variable function
PHP는 변수 함수 개념을 지원합니다. 변수 이름 뒤에 괄호가 있으면 PHP는 다음과 같은 함수를 찾습니다. 변수 값과 동일한 이름을 입력하고 실행해 보세요:
<?php function foo() { echo "In foo()"; } $func = 'foo'; $func(); # In foo()참고: 변수 함수는 PHP에서 echo, print 등과 같은 언어 구성을 지원하지 않습니다.
익명 함수
PHP에서는 익명 함수(클로저 함수라고도 함)를 사용하면 지정된 이름 없이 함수를 임시로 생성할 수 있습니다. 콜백 함수에 일반적으로 사용되는 매개변수:
<?php print_r(array_map(function($value) { return $value * 2; }, range(1, 5))); # Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )Closure 함수는 변수의 값으로도 사용할 수 있습니다.
$greet = function($name) { printf("Hello %s\r\n", $name); }; $greet('World'); # Hello WorldClosures는 상위 범위에서 변수를 상속할 수 있습니다. 이러한 변수는 사용 언어 구성을 사용하여 전달되어야 합니다.
<?php $message = 'hello'; $example = function () use ($message) { echo $message; }; $example(); # hello사용 중인 변수 바인딩을 지연해야 하는 경우 참조를 사용해야 합니다. 그렇지 않으면 복사본이 만들어져 사용됩니다. 매체:
<?php $result = 0; $one = function() use ($result) { var_dump($result); }; $two = function() use (&$result) { var_dump($result); }; $result++; $one(); # int(0) $two(); # int(1)
동적 함수 호출
PHP에서는 함수를 직접 호출하는 것 외에도 call_user_func( ) 또는 call_user_func_array() 함수 간접 호출 기능:
<?php function named_func($param1, $param2) { echo "这是一个命名函数。参数是:$param1 和 $param2 。<br />"; } call_user_func("named_func", "PARAM1", "PARAM2"); call_user_func_array("named_func", array("PARAM1", "PARAM2"));
위 내용은 PHP 학습 요약 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!