PHP 函数的参数

函数的参数

通过参数列表可以传递信息到函数,即以逗号作为分隔符的表达式列表。

PHP 支持按值传递参数(默认),通过引用传递参数以及默认参数。也支持可变数量的参数;更多信息请参照可变长度参数列表和涉及到的相关函数func_num_args()func_get_arg()以及func_get_args()

Example #1 向函数传递数组

<?php
functiontakes_array($input)
{
echo
"$input[0]+$input[1]=",$input[0]+$input[1];
}
?>

通过引用传递参数

缺省情况下,函数参数通过值传递(因而即使在函数内部改变参数的值,它并不会改变函数外部的值)。如果希望允许函数修改它的参数值,必须通过引用传递参数

如果想要函数的一个参数总是通过引用传递,可以在函数定义中该参数的前面预先加上符号 &:

Example #2 用引用传递函数参数

<?php
functionadd_some_extra(&$string)
{
$string.='andsomethingextra.';
}
$str='Thisisastring,';
add_some_extra($str);
echo
$str;//outputs'Thisisastring,andsomethingextra.'
?>

默认参数的值

函数可以定义 C++ 风格的标量参数默认值,如下:

Example #3 在函数中使用默认参数

<?php
functionmakecoffee($type="cappuccino")
{
return
"Makingacupof$type. ";
}
echo
makecoffee();
echo
makecoffee(null);
echo
makecoffee("espresso");
?>

上面代码段的输出是:


Making a cup of cappuccino.
Making a cup of .
Making a cup of espresso.

PHP 还允许使用数组和特殊类型 NULL 作为默认参数,例如:

Example #4 使用非标量类型作为默认参数

<?php
functionmakecoffee($types=array("cappuccino"),$coffeeMaker=NULL)
{
$device=is_null($coffeeMaker)?"hands":$coffeeMaker;
return
"Makingacupof".join(",",$types)."with$device. ";
}
echo
makecoffee();
echo
makecoffee(array("cappuccino","lavazza"),"teapot");
?>

默认值必须是常量表达式,不能是诸如变量,类成员,或者函数调用等表达式。

请注意当使用默认参数时,任何默认参数必须放在任何非默认参数的右侧;否则,函数将不会按照预期的情况工作。考虑下面的代码片断:

Example #5 函数默认参数不正确的用法

<?php
functionmakeyogurt($type="acidophilus",$flavour)
{
return
"Makingabowlof$type$flavour. ";
}

echo
makeyogurt("raspberry");//won'tworkasexpected
?>

上述例子的输出是:


Warning: Missing argument 2 in call to makeyogurt() in
/usr/local/etc/httpd/htdocs/php3test/functest.html on line 41
Making a bowl of raspberry .

现在,比较上面的例子和这个例子:

Example #6 函数默认参数正确的用法

<?php
functionmakeyogurt($flavour,$type="acidophilus")
{
return
"Makingabowlof$type$flavour. ";
}

echo
makeyogurt("raspberry");//worksasexpected
?>

这个例子的输出是:


Making a bowl of acidophilus raspberry.

Note:自 PHP 5 起,默认值可以通过引用传递。

可变数量的参数列表

PHP 4 及更高版本已经在用户自定义函数中支持可变数量的参数列表。其实很简单,只需使用func_num_args()func_get_arg(),和func_get_args()函数即可。

可变参数并不需要特别的语法,参数列表仍按函数定义的方式传递给函数,并按通常的方式使用这些参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值