当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

6.2.1在函数中传递参数

9/17/2020 9:38:49 PM 人评论

6.2.1在函数中传递参数

6.2 参数和返回值

用户可以通过参数和返回值与函数交换数据,本节将介绍具体情况。

6.2.1 在函数中传递参数

在PHP函数中,参数传递可以分为值传递和引用传递(也称为地址传递)两种情况。

1.值传递参数

默认情况下,PHP实行按值传递参数。值传递指调用函数时将常量或变量的值(通常称其为实参)传递给函数的参数(通常称其为形参)。值传递的特点是实参与形参分别存储在内存中,是两个不相关的独立变量。因此,在函数内部改变形参的值时,实参的值一般是不会改变的。6.1.2小节介绍的实例都属于按值传递参数的情况。

2.引用传递参数

引用传递(按地址传递)的特点是实参与形参共享一块内存。因此,当形参的值改变的时候,实参的值也会相应地做出改变。从这种角度上来说,可以认为形参和实参是同一个变量。

在定义引用传递参数时,可以在参数前面加上引用符号&。

【例6-11】 一个使用引用传递参数的例子。

<?PHP

function printString(&$string) {

echo($string);

$string = "打印完成!";

}

$str = "测试字符串!<BR>";

printString($str);

echo($str);

?>

在函数printString()中,定义了一个引用传递参数$string。在函数体中,首先调用echo()函数打印变量$string ,然后将变量$string 的值设置为“打印完成!”。使用变量$str 作为实参调用printString($str),调用完成后,打开变量$str的值。运行结果如下:

测试字符串!

打印完成!

可以看到,在作为实参调用printString()函数后,变量$str的值已经发生了改变。

3.参数的默认值

在PHP中,可以为函数的参数设置默认值。可以在定义函数时,直接在参数后面使用“=”为其赋值。

【例6-12】 设置参数默认值的例子。

<?PHP

function printString($string = "This is a string!") {

echo($string);

}

printString();

$str = "<BR>测试字符串! ";

printString($str);

?>

函数printString()的参数$string有一个默认值“This is a string!”,如果在调用函数时没有指定参数,则将默认值作为参数的值。在例 6-12 中,两次调用 printString()函数,一次没有参数,一次使用参数“<BR>测试字符串!”。运行结果如下:

This is a string!

测试字符串!

4.可变长参数

PHP还支持可变长度的参数列表。在定义函数时,不指定参数。在调用函数时,可以根据需要指定参数的数量,通过与参数相关的几个系统函数获取参数信息。具体说明如下:

• func_num_args:返回传递给函数的参数数量;

• func_get_arg:返回传递给函数的参数列表;

• func_get_args:返回一个数组,由函数的参数组成。

【例6-13】 一个可变长参数的实例。

<?PHP

function mysum() {

$num = func_num_args();

echo("函数包含:" . $num . "个参数<br>");

$sum = 0;

for($i=0; $i<$num; $i++) {

$sum = $sum + func_get_arg($i);

}

echo("参数累加之和为:" . $sum);

}

mysum(1, 2, 3, 4);

?>

自定义函数mysum()在定义时没有指定参数。在函数体中使用func_num_args()函数获取调用函数时传递的参数数量,然后使用for语句将每个参数值都累加到变量$sum中,并打印累加的结果。在下面的程序中,使用1、2、3、4作为参数调用mysum()函数。运行结果如下:

函数包含:4个参数

参数累加之和为:10

【例6-14】 修改例6-13,使用func_get_args函数获取参数信息,代码如下:

<?PHP

function sum1() {

$num = func_num_args();

echo("函数包含:" . $num . "个参数<br>");

$sum = 0;

$arg_list = func_get_args();

for($i=0; $i<$num; $i++) {

$sum = $sum + $arg_list[$i];

}

echo("参数累加之和为:" . $sum);

}

sum1(1, 2, 3, 4);

?>

运行结果与例6-13相同。

6.2.2 函数的返回值

可以为函数指定一个返回值,返回值可以是任何数据类型,使用return语句可以返回函数值并退出函数。

【例6-15】 对例6-13 中的mysum()函数进行改造,通过函数的返回值返回累加结果,代码如下:

<?PHP

function mysum() {

$num = func_num_args();

echo("函数包含:" . $num . "个参数\n");

$sum = 0;

$arg_list = func_get_args();

for($i=0; $i<$num; $i++) {

$sum = $sum + $arg_list[$i];

}

return $sum;

}

echo("计算结果为:" . mysum (1, 2, 3, 4));

?>

运行结果如下:

函数包含:4个参数

计算结果为:10

可以在函数中返回多个值(即返回数组)。

【例6-16】 下面程序中的mysquare()函数返回参数列表中所有参数的平方值。

<?PHP

function mysquare() {

$num = func_num_args();

$sum = 0;

$arg_list = func_get_args();

for($i=0; $i<$num; $i++) {

$arg_list[$i] = $arg_list[$i] * $arg_list[$i];

}

return $arg_list;

}

print_r(mysquare(1, 2, 3, 4));

?>

程序将参数值计算平方值,保存在数组$arg_list中,然后将数组$arg_list作为函数的返回值。使用print_r()函数打开mysquare()函数的返回结果,内容如下:

Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 )

相关教程

共有条评论 网友评论

验证码: 看不清楚?