写点什么

【web 开发基础】PHP 自定义函数之函数的返回值 -PHP 快速入门 (27)

作者:迷彩
  • 2022-11-17
    广东
  • 本文字数:1824 字

    阅读完需:约 6 分钟

前言

在定义函数时,函数名后面括号中的参数列表是用户在调用函数时用来将数据传递到函数内部的接口,而函数的返回值则将函数执行后的结果返回给调用者。如果函数没有返回值,就只能算一个执行过程。只依靠函数做一些事情还不够,有时更需要在程序脚本中使用函数执行后的结果。由于变量的作用域的差异,调用函数的脚本程序不能直接使用函数体里面的信息,但可以通过关键字 return 向调用者传递数据。return 语句在函数体中使用时,有以下两个作用:

  1. return 语句可以向函数调用者返回在函数体中任意确定的值。

  2. 将程序控制权返回到调用者的作用域,即退出函数。在函数体中如果执行了 return 语句,它后面的语句就不会被执行


语法

语法如下:

<?phpreturn 返回值;//一个确定的值?>
复制代码


编程实践

在上一篇文章《【web 开发基础】通过模拟地铁售票系统介绍 PHP 自定义函数之函数的参数 -PHP 快速入门 (26)》中我们写了一个模拟地铁售票系统的程序,代码如下:

<?php/*$originating  起点站$terminus  终点站*/
function saleTickets($line,$originating, $terminus){ //通过选择站点计算票价 地铁是按里程计算的.我们这里只是模拟一下 $station = [ 3=>[ '天河客运站-五山' => 2, '天河客运站-广州东站' => 3, '天河客运站-林和西' => 4, '天河客运站-体育西路' => 5 ], 4=>[ '黄村-车陂' => 2, '黄村-车陂南' => 3, '黄村-万胜围' => 4, '黄村-官洲' => 5 ] ]; echo "你选择的是" . $line . "号线,起始站点-终点站是: " . $originating . "-" . $terminus; echo "<br>";//<br>是网页中的换行 echo "你的票价是: " . $station[$line][$originating . "-" . $terminus];//数组的用法后面细说 //调用支付系统进行支付 $yourPay = 3; pay($yourPay, $station[$line][$originating . "-" . $terminus]);}

//支付系统
function pay($yourPay, $ticketPrice){ if($yourPay>$ticketPrice){ echo "支付成功,正在找零....找回金额为:". ($yourPay-$ticketPrice); } elseif($yourPay<$ticketPrice){ echo "请继续支付....已放入金额为:". ($ticketPrice-$yourPay); }else{ echo "支付成功,正在出票..."; }}

saleTickets(3,'天河客运站', '体育西路');
复制代码

在上面的例子中,我们在售票函数 saleTickets($line,$originating, $terminus)中调用了支付函数 pay(),在支付函数中们是直接输出支付的结果,而不是返回结果。如果我们需要在售票函数 saleTickets($line,$originating, $terminus)中需要 pay()返回一个值,并在售票函数中使用到,比如返回支付成功的编码 code 以及提示信息等等,然后通过返回的信息判断支付的具体情况,这时候我们就需要使用到 return 返回一个值,以供调用函数来使用。修改 pay()函数代码如下:

<?phpfunction pay($yourPay, $ticketPrice){	if($yourPay>$ticketPrice){		return array(    	'code' => '0',      'msg'=> "支付成功,正在找零....找回金额为:". ($yourPay-$ticketPrice);    )	}	elseif($yourPay<$ticketPrice){    return array(    	'code' => '1',      'msg'=> "请继续支付....已放入金额为:". ($ticketPrice-$yourPay)    )	}else{    return array(    	'code' => '2',      'msg'=> "支付成功,正在出票..."    )	}}?>
复制代码


在上述代码中,由于 PHP 中 return 一次智能返回一个值,当我们需要返回多个值时,我们可以把所以值放到一个数组中进行返回。这样我们就可以从在其他函数中判断调用的其他服务是否成功,再进行接下来的操作,这样更符合我们的实际需求。

调用如下:

<?phpfunction saleTickets($line,$originating, $terminus){	//.....	$returnData = pay($yourPay, $station[$line][$originating . "-" . $terminus]);}
?>
复制代码


在上面的例子中,当 saleTickets()调用 pay()时,不仅可以将一些数据以参数的形式传递到函数的内部,还执行了函数,并且在调用函数处还可以使用 return 语句返回的值,而且这个从函数返回的值可以在脚本中像使用其他值一样使用,比如:将返回值赋值给一个变量、直接输出或是参与运算等。

总结


通常在函数中使用 return 语句可以很容易的返回一个值。如果需要返回多个值,则不能采用连续写多个 return 语句的方式。因为函数执行到第一个 return 语句就会退出,不会执行其后面的任何代码,但是可以将多个值添加一个数组中,在使用 return 返回这个数组,在调用函数时就可以接收到这个数组,并在程序中像使用其他数组一样。


发布于: 刚刚阅读数: 4
用户头像

迷彩

关注

我的工作是常年写bug|公众号:编程架构之美 2020-06-18 加入

修bug的菜鸟~公众号:“互联网有啥事”已改名为“编程架构之美”

评论

发布
暂无评论
【web 开发基础】PHP 自定义函数之函数的返回值-PHP 快速入门 (27)_web开发基础_迷彩_InfoQ写作社区