이 글은 PHP 학습의 함수에 대한 지식을 소개합니다. 필요한 친구들이 참고할 수 있습니다.
사용 가능한 함수 이름은 문자 또는 밑줄로 시작하고 그 뒤에 문자, 숫자 또는 밑줄이 옵니다.
함수 이름은 대소문자를 구분하지 않습니다(사실 PHP의 함수 이름, 메서드 이름 및 클래스 이름은 대소문자를 구분하지 않습니다). 함수는 조건부로 정의됩니다.
PHP는 함수 오버로딩을 지원하지 않으며 선언된 함수를 정의 해제하거나 재정의하는 것이 불가능합니다.
<?php Test(); # function test. function test() { echo 'function test.'; }
함수의 매개변수
<?php $i = 1; add($i); echo $i; # 1 function add($test) { $test++; }
&
기호를 추가하면 됩니다: <?php $i = 1; add($i); echo $i; # 2 function add(&$test) { $test++; }
3. 가변 개수의 매개변수
function add($a, $b) { return $a + $b; } echo add(1,2,5); # 3
PHP 5.5 및 이전 버전에서는 불확실성을 처리해야 하는 경우 매개변수 수는 다음 함수를 사용하여 처리됩니다. &
:
<?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 支持可变数量的参数。定义函数时列出的参数实际上只是最少的参数;在调用时是允许多传参数的,只是多余的参数会被忽略掉:
function sum(...$numbers) { $acc = 0; foreach ($numbers as $n) { $acc += $n; } return $acc; } echo sum(1, 2, 3, 4); # 10
在 PHP 5.5 及更早版本中,如果需要处理不确定数量的参数,可以使用以下函数进行处理:func_num_args()
— 返回传递给函数的参数个数func_get_arg()
— 返回指定的参数func_get_args()
— 以数组的形式返回参数列表
<?php function foo() { echo "In foo()"; } $func = 'foo'; $func(); # In foo()
在 PHP 5.6 及以上的版本中,由 ...
语法实现可变数量的参数列表:
<?php print_r(array_map(function($value) { return $value * 2; }, range(1, 5))); # Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
PHP 支持可变函数的概念 —— 如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它:
$greet = function($name) { printf("Hello %s\r\n", $name); }; $greet('World'); # Hello World
注:可变函数不支持 PHP 中的语言结构,如echo
,
在 PHP 中,匿名函数,也叫闭包函数,是指允许临时创建一个没有指定名称的函数。常用于回调函数中的参数:
<?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)
闭包可以从父作用域中继承变量。 任何此类变量都应该用 use
语言结构传递进去:
<?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"));
如果需要延迟绑定 use
里面的变量,需要使用引用,否则在定义的时候就会做一份拷贝放到 use
中:
在 PHP 中,除了直接调用函数外,还可以通过 call_user_func()
或 call_user_func_array()
func_num_args()
— 함수에 전달된 매개변수 수를 반환합니다.
func_get_arg()
— 지정된 매개변수를 반환합니다. func_get_args( )
— 배열 형식으로 매개변수 목록을 반환합니다.
PHP 5.6 이상에서는 가변 개수의 매개변수 목록이 ...
구문으로 구현됩니다. rrreee 변수 함수
PHP는 변수 함수 개념을 지원합니다. 변수 이름 뒤에 괄호가 있으면 PHP는 변수 값과 동일한 이름을 가진 함수를 찾아 실행을 시도합니다. rrreee참고: 변수 함수
익명 함수echo
, print
등과 같은 PHP의 언어 구조는 지원되지 않습니다.
PHP에서는 클로저 함수라고도 불리는 익명 함수를 사용하면 지정된 이름 없이 함수를 임시로 생성할 수 있습니다. 콜백 함수에 일반적으로 사용되는 매개변수:
rrreee
use
언어 구성을 사용하여 전달되어야 합니다. 🎜rrreee🎜 use
에서 변수 바인딩을 지연해야 하는 경우 참조를 사용해야 합니다. 그렇지 않으면 참조를 사용해야 합니다. 사본이 만들어져 use
에 배치됩니다: 🎜rrreee🎜동적 함수 호출🎜🎜PHP에서는 함수를 직접 호출하는 것 외에도 call_user_func()
를 전달할 수도 있습니다. > 또는 call_user_func_array() 함수 간접 호출 함수: 🎜rrreee🎜관련 권장 사항: 🎜🎜🎜PHP 학습용 배열 🎜🎜🎜🎜WampSever용 PHP 학습 🎜 🎜🎜🎜🎜위 내용은 PHP 학습 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!