Table of Content
前面的博文中多次提到和用到函数,现在我们就来了解一下 PHP 中的函数。
定义函数
在 PHP 中,函数使用 function
关键字来定义,通常还有函数名、参数列表、函数体组成。函数返回值不需要声明,如果没有返回值则省略 return
语句即可。
定义函数的基本格式为:
<?php
function 函数名(参数1, 参数2, 参数3...) {
函数体
}
?>
举个栗子:
<?php
function foo($str, $pri) {
echo str;
return "ret";
}
$a = foo("some string", true);
echo $a;
?>
参数默认值
函数的参数允许设定默认值,在定义函数是直接在参数右侧加上 = 默认值
即可,例如 function foo($a, %b = 'b'){}
。
注意 : 设定参数默认值需要从参数列表右侧开始,也就是说如果为某一个参数设定了默认值,那么它右侧不能出现没有默认值的参数,形如 function foo($a = '1', %b){}
这样的函数是错误的。
参数传递
参数传递支持两种方式: 值传递、引用传递。但是要注意在 PHP 5 之前的版本不支持引用传递的方式。
-
值传递指的是将实参的值复制到形参中,函数内部的操作不影响实参。
-
引用传递指的是将实参内存地址传入,在函数内部的操作直接影响到实参的值。
也就是说值传递中,实参与形参分别指向两块不同的内存区域,而引用传递则指向同一块内存区域。
要进行引用传递,则需要在形参前添加 &
符号。
<?php
function foo1($var) { # 值传递
$var++;
echo "foo1:".$var."\n";
}
function foo2(&$var) { # 引用传递
$var++;
echo "foo2:".$var."\n";
}
$a = 10;
echo $a."\n";
foo1($a);
echo $a."\n"; # 值未改变
$b = 20;
echo $b."\n";
foo2($b);
echo $b."\n"; # 值被改变
?>
变量函数
与 $$
类似,我们也可以用过 $var()
的形式来调用函数,PHP 会取出 $var
的值并寻找与这个值同名的函数。举个栗子:
<?php
function foo($var) {
echo $var;
}
$a = "foo";
$a("meniny");
?>