2.7.3 函数的参数和函数的返回值
上小节的函数say_hello()只能向“Jack”显示问候语,如果想向更多的人显示问候语,该怎么做呢?这就是函数参数的问题。在大多数情况下,调用函数都会有数据的传递,这就是前面讲到的函数参数。将参数传递给函数,函数根据不同的参数会完成不同的功能,或有不同的输出。
在函数say_hello()的例子中,如果想要向更多的人显示问候语,可以传递一个参数给函数say_hello(),这个参数就是不同的人名,在函数体内输出这个变量即可。代码2-32演示了带有参数的函数的用法。
代码2-32 调用带有参数的函数2-32.php
01 <?php
02 function say_hello($some_name)
03 {
04 echo"Hello,".$some_name;
05 echo"<br/>";
06 echo"<br/>";
07 }
08
09 say_hello("Jenny");//这里使用参数“Jenny”调用函数say_hello
10 say_hello("Harry");//这里使用参数“Harry”调用函数say_hello
11 say_hello("Ema");//这里使用参数“Ema”调用函数say_hello
12 ?>
【代码解析】上面的程序第2~7行,定义了带有一个参数的函数say_hello($some_name)。接着3次调用该函数,但每次传给函数参数的值不一样。第一次调用时,传给函数的值是“Jenny”,因此函数参数$some_name的值即为“Jenny”,这时就会输出“Hello,Jenny”。同样的道理,其他的调用就会显示对其他人名的问候语。程序执行结果如图2-27所示。
PHP的函数的参数可以使用默认值。通过一个实例程序来了解函数默认参数的使用。请看代码2-33。
代码2-33 函数的默认参数2-33.php
01 <?php
02 function say_hello($some_name="Jack")
03 {
04 echo"Hello,".$some_name;
05 echo"<br/>";
06 echo"<br/>";
07 }
08
09 say_hello();//不使用任何参数调用函数say_hello时,函数将使用函数定义的默认参数“Jack”
10 say_hello("Jenny");//使用参数“Jenny”调用函数say_hello
11 say_hello("Harry");//使用参数“Harry”调用函数say_hello
12 say_hello("Ema");//使用参数“Ema”调用函数say_hello
13 ?>
【代码解析】该程序对函数say_hello()做了一点小的改动,在函数定义时,第2行为函数的参数$some_name赋了默认值“Jack”。这样当程序中调用该函数,但又没有传值给函数参数时,函数就会在函数体内使用这个默认值“Jack”,如果调用时传值给函数参数,那么这个默认值就不再起作用,而是在函数体内使用用户传入的值。程序首先使用say_hello()调用该函数,没有传入任何值给函数,那么这时函数体执行后,就会输出“Hello,Jack”。程序的整个执行结果如图2-28所示。
有时,在调用一个函数之后,希望能得到一个确定的值,这就是函数的返回值。PHP函数中使用return语句取得函数的返回值,return语句会将函数中一个确定的值带回到调用函数的地方。如下面的示例代码2-34演示了如何获得函数的返回值。
代码2-34 函数的返回值2-34.php
01 <?php
02 define(PI,3.14);
03
04 for($r=3;$r<=8;$r++)//从3到8循环
05 {
06 $s=get_circle_area($r);//调用函数get_circle_area()
07 echo"r=$r,area=$s";
08 echo"<br/>";
09 echo"<br/>";
10 }
11
12 function get_circle_area($radius)//定义函数get_circle_area(),参数是圆的半径
13 {
14 $area=PI*$radius*$radius;//求圆的面积
15 return$area;//返回圆的面积
16 }
17 ?>
【代码解析】上述程序第12~16行定义了一个计算圆面积的函数get_circle_area(),并在函数体最后将计算结果用return语句返回。在for循环里多次调用函数get_circle_area(),每次调用,函数get_circle_area()都会将计算结果返回赋给变量$s,接着输出圆的半径及其对应的圆的面积。程序的执行结果如图2-29所示。
共有条评论 网友评论