【web 开发基础】通过模拟地铁售票系统介绍PHP 自定义函数之函数的参数-PHP 快速入门 (26)

简介: 参数列表是由0个,一个或多个参数组成的。每个参数是一个表达式,用逗号分隔。对于有参函数,在PHP脚本程序中和被调用函数之间有数据传递关系。定义函数时,函数名后面括号内的表达式称为形式参数(简称“形参”),被调用函数名后面括号中的表达式称为实际参数(简称:实参),实参和形参需要按顺序对应传递数据。如果函数没有参数列表,则函数执行的任务就是固定的,用户在调用函数时不能改变函数内部的一些执行行为。例如:前面介绍的九九乘法表multiplicationTable()函数就是没有参数列表函数,每次调用multiplicationTable()函数时都会输出固定的格式,用户连最基本的输出行数都不能改变。

前言

参数列表是由0个,一个或多个参数组成的。每个参数是一个表达式,用逗号分隔。对于有参函数,在PHP脚本程序中和被调用函数之间有数据传递关系。定义函数时,函数名后面括号内的表达式称为形式参数(简称“形参”),被调用函数名后面括号中的表达式称为实际参数(简称:实参),实参和形参需要按顺序对应传递数据。如果函数没有参数列表,则函数执行的任务就是固定的,用户在调用函数时不能改变函数内部的一些执行行为。例如:前面介绍的九九乘法表multiplicationTable()函数就是没有参数列表函数,每次调用multiplicationTable()函数时都会输出固定的格式,用户连最基本的输出行数都不能改变。

如果函数使用参数列表,函数参数的具体数值就会从函数外部获得。也就是用户在调用函数时,在函数体没有执行之前,将一些数据通过函数的参数列表传递到函数内部,这样函数在执行函数体时,就可以根据用户传递过来的数据决定函数体内部如何执行。所以说,函数的参数列表就是给用户调用函数时提供的操作接口。

通过实际栗子分析

举个例子,工厂生产螺丝,螺丝有不同型号,不同型号代表不同形状以及不同尺寸,这时如果每个不同型号的螺丝都需要单独的机器去生产,如果生产螺丝的型号很多,那得需要多少台机器,得多大厂房才能装得下这些机器,如果这时候有一台机器能够通过调整参数生产不同型号的螺丝,是不是就会节省很多成本,这才是符合我们想法的基本操作。或者就像你去奶茶店,可以选择大杯,中杯,小杯一样,你可以自由选择,这些数据由用户传入,再比如超市收银,收银员会扫条码识别这是什么商品,具体多少钱,这些都需要用户来传入数据作为参数,去生产符合要求的产品或者计算符合需求的结果,通过传入参数来控制系统,这样使用起来更灵活。不可能说为不同产品单独做一个系统吧,万一遇上想降价促销的时候或者上架新品的时候,还得专门去找人开发一台新的收银机系统来适应新的需求,这显然不符合我们现实的操作逻辑。这样还不如计算器好使。再比如我们在地铁站的售票机购买地铁票,我们先选择起点和终点站,系统就会根据我们的选择,计算票价。你放入指定面额的纸币或者硬币,等到你的所付金额等于或超过票价时,系统自动出票,如果所付金额超过票价,机器将会自动给你找零。如果你突然不想坐车了,这时候如果你的操作还没完成,还可以终止操作退出系统,如果付了部分金额,机器会退回已付金额。这里起始站点和终点站,以及你所付的钱都是由你来决定的,由你输入,这就是函数参数最完美的地方,增加了代码的可复用性以及操作的灵活性,我们写代码的时候,只需要写一个函数就能适应多种情况。如果上面的例子还不是很明白,那下面通过代码来继续了解。

编程实践

我们在前面写过计算数字1-100的和,我们之前在代码写死了的,如果这时候我们想计算数字1-1000的和,怎么办?我们看看代码怎么写:

<?phpfunctionsum($number){
$sum=0;
for($i=1;$i<=$number;$i++){
$sum+=$i;
  }
return$sum;
}
?>

在定义函数sum()时,添加了1个形参这个参数就是最大数,比如1-100,就是100;需要一个整型数值。这里调用带参数列表的sum()函数,如下所示:

<?phpecho"计算结果如下:<br>";
echosum(100);
?>

该程序执行后输出结果如下图:

在函数中使用的参数列表,是用户调用函数时传递数据到函数内部的接口。可以根据声明函数是需要设置多个参数,上例中已经设置了1个参数,用来在调用时改变参数来计算累计到哪个数为止。如果还想让用户调用sum()函数,可以改变初始值,比如现在不想从1开始计算,我想自定义初始参数,只要在声明函数时,在参数列表中多设置1个参数即可。

代码如下:

<?phpfunctionsum($start, $end){
$sum=0;
for($i=$start;$i<=$end;$i++){
$sum+=$i;
  }
return$sum;
}
echo"计算结果如下:<br>";
echosum(30, 100);
?>

执行结果如下:

上面我们说了地铁购票的例子,我们看看代码怎么写,我们这里使用代码简单模拟一下。售票系统比这复杂多了,这里只是模拟大概流程:

<?php/*$originating  起点站$terminus  终点站*/functionsaleTickets($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]);
}
//支付系统functionpay($yourPay, $ticketPrice){
if($yourPay>$ticketPrice){
echo"支付成功,正在找零....找回金额为:". ($yourPay-$ticketPrice);
  }
elseif($yourPay<$ticketPrice){
echo"请继续支付....已放入金额为:". ($ticketPrice-$yourPay);
  }else{
echo"支付成功,正在出票...";
  }
}
saleTickets(3,'天河客运站', '体育西路');

执行结果:

目录
相关文章
|
PHP 开发者
PHP计算过去一定时间段内日期范围函数
这个函数为开发者提供了一个快速而简单的方法来获取与当前日期相关的过去时间范围,代码简洁易懂,可复用性高。
285 15
|
PHP 开发者 索引
探究PHP中常见数组操作函数
在编码实践中,合理利用这些数组操作函数可以简化编程工作,提升代码的效率和可读性。为达到最佳实践,开发者应该通过阅读官方文档来深入理解每个函数的工作原理以及如何在不同的场景下运用它们。
518 8
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
665 20
|
数据库连接 PHP 数据库
【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常
|
PHP 数据库
【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
490 3
|
监控 关系型数据库 MySQL
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
754 0
|
PHP
你知道怎么在PHP中创建可选参数吗?
在上一篇《玩转PHP之快速生成二维码》中给大家介绍了怎么通过PHP快速生成二维码,感兴趣的朋友可以学习了解一下~ 本文的主题内容则是“如何在PHP中创建可选参数”? 有的人可能要问什么是“可选参数”? 可选参数就是指即使没有传递任何东西也不会阻止函数工作的参数,通俗一点的说法就是指有默认值的就是可选参数。
399 0
|
关系型数据库 MySQL PHP
PHP和Mysql前后端交互效果实现
本文介绍了使用PHP连接MySQL数据库的基本函数及其实现案例。内容涵盖数据库连接、选择数据库、执行查询、获取结果等常用操作,并通过用户登录和修改密码的功能实例,展示了PHP与MySQL的交互过程及代码实现。
568 0
PHP和Mysql前后端交互效果实现
|
关系型数据库 MySQL Linux
查看Linux、Apache、MySQL、PHP版本的技巧
以上就是查看Linux、Apache、MySQL、PHP版本信息的方法。希望这些信息能帮助你更好地理解和使用你的LAMP技术栈。
748 17