Maison > Article > développement back-end > php(4)——函数
PHP中函数无需在调用之前被定义;
PHP 中的所有函数和类都具有全局作用域,可以定义在一个函数之内而在之外调用,反之亦然;
PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数;
在 PHP 中可以调用递归函数。但是要避免递归函数/方法调用超过 100-200 层,因为可能会使堆栈崩溃从而使当前脚本终止。
函数的定义:
function 函数名([参数列表]){
函数体
}
PHP默认是采用值传递的方式,但也可以传递引用(该方式可以在函数体改变传入的参数值)
如:
function fun(&$var){
$var++;
}
$var = 0;
fun($var);
echo $var;
输出 1;
PHP支持默认参数值。
如:
function fun($var1,$var2=2,$var3=3){
return $var1+$var2+$var3;
}
echo fun(1);
echo fun(1,1);
echo fun(1,1,2);
将分别输出6 5 4
注意:任何默认参数必须放在任何非默认参数的右侧;否则,函数将不会按照预期的情况工作。
如将上述函数改为:
function fun($var2=2,$var3=3,$var1){
return $var1+$var2+$var3;
}
echo fun(1);
echo fun(1,1);
echo fun(1,1,2);
上述除了第三种调用方式能正常执行外,前两种都会出现问题。
PHP支持可变数量的参数列表。
在PHP5.6之前,获取参数的信息需要用到func_num_args()获得参数的数目,func_get_arg(i)获取第i个参数的值;
如:
function fun(){
$len = func_num_args();
$res = 0;
for($i = 0; $i$res += func_get_arg($i);
}
return $res;
}
在PHP5.6中引入了 ...$args的方式,
如:
function fun(...$args){
$res = 0;
foreach ($args as $val){
$res += $val;
}
return $res;
}
两种方式的结果都是一样的。
PHP中可变函数的概念
即如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。
例:
function fun(){
echo "Hello";
}
$var = "fun";
$var();//将会调用fun()函数
PHP中的匿名函数
匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。
也可以将匿名函数通过赋值的方式指定其函数名,如:
$fun = function (){
echo "HelloWorld";
};
$fun();
以上就介绍了php(4)——函数,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。