函数的参数

通过参数列表可以传递信息到函数,即以逗号作为分隔符的表达式列表。参数是从左向右求值的。 

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.\n";

}

echo makecoffee();

echo makecoffee(null);

echo makecoffee("espresso");

?>  

以上例程会输出:

Making a cup of cappuccino.

Making a cup of .

Making a cup of espresso.

PHP 还允许使用数组 array 和特殊类型 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.\n";

}

echo makecoffee();

echo makecoffee(array("cappuccino", "lavazza"), "teapot");

?>  

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

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

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

<?php

function makeyogurt($type = "acidophilus", $flavour)

{

    return "Making a bowl of $type $flavour.\n";

}

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

?>  

以上例程会输出:

Warning: Missing argument 2 in call to makeyogurt() in 

/usr/local/etc/httpd/htdocs/phptest/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.\n";

}

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

?>  

以上例程会输出:

Making a bowl of acidophilus raspberry.

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

可变数量的参数列表

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

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

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

php编程基础教程.pptx|php编程培训,php,编程,基础,教程,pptx
php编程基础教程.pptx

历史上的今天:04月28日

referrer策略和meta标签的问题

referrer策略和meta标签的问题请求后端接口时,banner图片的请求出现403错误:GEThttp://xxxxxxxxxxxx403(Forbidden)。在网上搜寻一番,解决方法如下:在index.html中的head中添加&lt;meta name=&quot;referrer&quot; content=&quot;no-referrer&quot; /&gt;。在此之前,关于r

热门专题

国家开放大学|国家开放大学报名,国家开放大学报考,国家开放大学,什么是国家开放大学,国家开放大学学历,国家开放大学学费,国家开放大学报名条件,国家开放大学报名时间,国家开放大学学历,国家开放大学专业
国家开放大学
大理科技管理学校|大理科技管理学校,大理科技,大理科技中等职业技术学校,大理科技管理中等职业技术学校,大理科技学校
大理科技管理学校
一年制中专|中专学历,中专是什么学历,中专是什么,中专有什么专业,中专升大专,一年制中专
一年制中专
开放大学|开放大学报名,开放大学报考,开放大学,什么是开放大学,开放大学学历,开放大学学费,开放大学报名条件,开放大学报名时间,开放大学学历,开放大学专业
开放大学
天麻的功效与作用吃法|天麻的功效与作用,天麻的功效与作用吃法,天麻炖什么治头痛最好,天麻的功效与作用禁忌,天麻多少钱一斤,天麻的功效与作用吃法及禁忌,天麻怎么吃效果最好,天麻粉的功效与作用,天麻怎么吃
天麻的功效与作用吃法
综合高中|云南综合高中,昆明综合高中,综合高中能考本一吗,综合高中和普通高中的区别,综合高中是什么意思,综合高中能参加全国统一高考吗,综合高中可以考哪些大学,综合高中的学籍是什么
综合高中
金诺幼儿园(春城路金诺幼儿园)|昆明官渡区幼儿园,幼儿园报名,官渡区幼儿园,春城路幼儿园,幼儿园招生,学前班,昆明幼儿园,金诺幼儿园,环城南路幼儿园,石井路幼儿园
金诺幼儿园(春城路金诺幼儿园)
自考本科|自考本科有用吗,自考文凭,自考本科文凭,自考文凭有用吗,自考本科文凭有用吗,自考文凭承认吗
自考本科

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部