函数的参数


函数的参数

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

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

Example #1 向函数传递数组

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

通过引用传递参数

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

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

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

<?php
function add_some_extra(&$string)
{
    
$string .= 'and something extra.';
}
$str 'This is a string, ';
add_some_extra($str);
echo 
$str;    // outputs 'This is a string, and something extra.'
?>

默认参数的值

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

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

<?php
function makecoffee($type "cappuccino")
{
    return 
"Making a cup of $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
function makecoffee($types = array("cappuccino"), $coffeeMaker NULL)
{
    
$device is_null($coffeeMaker) ? "hands" $coffeeMaker;
    return 
"Making a cup of ".join(", "$types)." with $device. ";
}
echo 
makecoffee();
echo 
makecoffee(array("cappuccino""lavazza"), "teapot");
?>

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

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

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

<?php
function makeyogurt($type "acidophilus"$flavour)
{
    return 
"Making a bowl of $type $flavour. ";
}

echo 
makeyogurt("raspberry");   // won't work as expected
?>

上述例子的输出是:


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
function makeyogurt($flavour$type "acidophilus")
{
    return 
"Making a bowl of $type $flavour. ";
}

echo 
makeyogurt("raspberry");   // works as expected
?>

这个例子的输出是:


Making a bowl of acidophilus raspberry.

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

可变数量的参数列表

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

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


«  用户自定义函数
» 返回值
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 药转 我心中的妈妈作文600字 塘沽大爆炸.诗四首 五月,斜风细雨 我喜欢你,是一种表白;我需要你,是一种认定。 想真的 幸福就应该做到 写给我唯一最爱的人 不哭,不哭,不准哭。 2015年杂志社工作总结与2016年工作计划 小学五年级作文800字:都是羊肉串惹的祸 忙起来多好,因为闲下来更累 2016央视元宵晚会精彩看点 2015摄影专业毕业生求职信 2015《我的长生果》教学设计(公开课) 幼儿园健康教案:果宝特工 临床医学本科生求职的自我介绍 四年,我可以等你 赠阮星竹 读后感——一本书小时候就在想的事450字 2016人社局团支部年工作计划 大学希望爱心社第2学期手语教学活动策划书 我在漫无目的地旅行 与爱情有关的经典个性句子2016 总有这样的几个人 长城作文1600字 海岛清晨 送给自己,假期愉快 你们可不可以让我相信爱情。 久居岳阳想家乡有感 风声 雨声 雷声 把窗儿打开,让阳光进来 2014社会调查报告_社会调查报告 保全美名 永远是朋友作文 感悟人生的经典情感语录 高中高三作文1000字:“雷锋精神’’永不褪色的主题 法律服务所工作总结-安全工作总结_安全工作总结 坚定必胜信心 迎接美好明天——2011年新年寄语 一年一度的六一儿童节祝福短信 在5.18国际博物馆日活动启动仪式上的讲话 雅趣人生 2016年党支部党建工作总结 今天,我很快乐作文100字 烧烤!烧烤! 我家的春节——放鞭炮 给老师的一份感激作文900字 让人流泪的故事作文3000字 《论语:不义而富且贵,于我如浮云》研究性学习心得 4月公司行政部门工作总结

Copyright © 2016 phpStudy |