在php函数中,参数传递可以分为值传递和引用传递(也称为地址传递)两种情况。默认情况下,php实行按值传递参数。值传递参数调用函数时将常量或变量的值(通常称其为实参)传递给函数的参数(通常称为形参)。值传递的特点是实参与行参分别存储在内存中,是两个不相关的独立变量。因此,在函数内部改变形参的值时,实参的值一般是不会改变的。
引用传递(按地址传递)的特点是实参与行参共享一块内存。因此,当形参的值改变的时候,实参的值也会相应的做出改变。从这种角度上说,可以认为形参合实参是同一个变量。
定义引用传递参数时,可以在参数前面加上引用符号&
function printString(&$string){
echo($string);
$string="打印完成";
}
$str="测试字符!\n";
printString($str);
echo($str);
?>
php还支持可变长度的参数列表。在定义函数时,不指定参数。在调用函数时,可以根据需要指定参数的数量,通过与参数相关的几个系统函数获取参数信息。具体说明为:
func_num_args 返回传递给函数的参数数量
func_get_arg 返回传递给函数的参数列表
func_get_arg 返回一个数组,由函数的参数组成。
function mysun()
{
$num=func_num_args();
echo("函数包含:".$sum."个参数\n");
$sum=0;
for($i=0;$i
{
$sum=$sum+func_get_arg($i);
}
echo("参数累加纸盒为:".$sum);
}
mysum(1,2,3,4);