首页 > 编程语言 >【web 开发基础】PHP 自定义函数之函数的返回值-PHP 快速入门 (27)

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

时间:2023-04-19 11:32:15浏览次数:49  
标签:返回 语句 return 函数 自定义 yourPay 支付 PHP

前言

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

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

语法

语法如下:

<?php
return 返回值;//一个确定的值
?>

编程实践

在上一篇文章《【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()函数代码如下:

<?php
function 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一次智能返回一个值,当我们需要返回多个值时,我们可以把所以值放到一个数组中进行返回。这样我们就可以从在其他函数中判断调用的其他服务是否成功,再进行接下来的操作,这样更符合我们的实际需求。

调用如下:

<?php
function saleTickets($line,$originating, $terminus){
	//.....
	$returnData = pay($yourPay, $station[$line][$originating . "-" . $terminus]);
}

?>

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

总结

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

标签:返回,语句,return,函数,自定义,yourPay,支付,PHP
From: https://blog.51cto.com/micai01/6206063

相关文章

  • SQL Server和Oracle常用函数对比
    SQLServer和Oracle常用函数对比SQLServer和Oracle是大家经常用到的数据库,在此感谢热心网友总结出这些常用函数以供参考。数学函数1.绝对值S:selectabs(-1)valueO:selectabs(-1)valuefromdual2.取整(大)S:selectceiling(-1.001)valueO:......
  • CentOS7添加自定义脚本服务
    在CentOS7下,已经不再使用chkconfig命令管理系统开机自启动服务和条件自定义脚本服务了,而是使用管理unit的方式来控制开机自启动服务和添加自定义脚本服务。在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务unit,有target后缀的开机级别unit等。如果想把自定......
  • 6.自定义注解与设计模式
    自定义注解与设计模式课程目标熟悉注解底层实现原理完成ORM框架底层原理常用设计模式单例、工厂、代理一.自定义注解1.1什么是注解?Jdk1.5新增新技术,注解。很多框架为了简化代码,都会提供有些注解。可以理解为插件,是代码级别的插件,在类的方法上写:@XXX,就是在......
  • 11.Session与Cookie(自定义Session)
    Session与Cookie(自定义Session)课程目标:#熟悉Cookie、Session底层实现原理、自定义缓存、自定义Token、表单重复提交#解决方案、Servlet之Fileter解决XSS攻击。一、.会话管理入门1.1生活中会话我:小张,你会跳小苹果码?小张:会,怎么了?我:公司年会上要表演节目,你教教......
  • thinkphp6 获取刚入库的数据ID方法
    首先,插入数据,有3个方法都可以实现create()create方法返回当前模型的对象实例,用箭头符号就能获取主键ID如果你的自增ID是id的话,获取方法也要变成$order->id$order=order::create($data);echo$order->id;save()save方法返回新增总数,不能通过返回值获取。需要通过......
  • 小程序打印小票,复制功能,自定义导航栏
    //复制联系地址fnCopyAddress(){wx.setClipboardData({data:this.data.detailInfo.address,success:res=>{Util.errorShow('复制联系地址成功')}})},//打印小票fnPrintTicket(){let_this=this;......
  • mysql函数
    1、介绍mysql函数分为四大类:字符串函数、数值函数、日期函数和高级函数。MySQL函数|菜鸟教程(runoob.com)2、常用一般函数时间:now()#返回当前日期和时间2018-09-1920:57:43curtime()#返回当前时间19:59:02current_timestamp()#返回当前日期和时间2018-09-1920:......
  • mysql函数(补充)
    环境:10.4.26-MariaDB1、sleepsleep(n)执行一遍函数,延时n秒如果在where条件中多次需要执行sleep,则多次延时sleep函数返回为false,不论是n是否为0假设设置sleep(100),数据库如实进行了延时n可以设定为小数,最小是0.001,但是这并不是绝对准确2、updatexmlupdatexml(v1,v2,v3......
  • 实现声明式锁,支持分布式锁自定义锁、SpEL和结合事务
    目录2.实现2.1定义注解2.2定义锁接口2.3锁的实现2.3.1什么是SPI2.3.2通过SPI实现锁的多个实现类2.3.3通过SPI自定义实现锁3.定义切面3.1切面实现3.2SpEL表达式获取动态key3.3锁与事务的结合4.测试4.1ReentrantLock测试4.2RedissonClient测试4.3自定义锁测试5.尾声5.1......
  • JDBC 调用自定义函数(常说的存储过程)的步骤
     平常说的存储过程(Procedure),严格意义上是自定义函数,所以这里以【自定义函数】为名,简称【函数(function)】。 packagecom.joyupx.jdbc;importlombok.extern.slf4j.Slf4j;importorg.junit.jupiter.api.Test;importjava.io.IOException;importjava.io.InputStream;im......