【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,'天河客运站', '体育西路');

执行结果:

目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 JSON
PHP从0到1实现 AI 智能体系统并且训练知识库资料
本文详解如何用PHP从0到1构建AI智能体,涵盖提示词设计、记忆管理、知识库集成与反馈优化四大核心训练维度,结合实战案例与系统架构,助你打造懂业务、会进化的专属AI助手。
192 6
|
2月前
|
PHP 开发者
PHP计算过去一定时间段内日期范围函数
这个函数为开发者提供了一个快速而简单的方法来获取与当前日期相关的过去时间范围,代码简洁易懂,可复用性高。
114 15
|
7月前
|
消息中间件 缓存 弹性计算
纯PHP+MySQL手搓高性能论坛系统!代码精简,拒绝臃肿
本内容分享了一套经实战验证的社交系统架构设计,支撑从1到100万用户的发展,并历经6次流量洪峰考验。架构涵盖客户端层(App、小程序、公众号)、接入层(API网关、负载均衡、CDN)、业务服务层(用户、内容、关系、消息等服务)、数据层(MySQL、Redis、MongoDB等)及运维监控层(日志、监控、告警)。核心设计包括数据库分库分表、多级缓存体系、消息队列削峰填谷、CQRS模式与热点数据动态缓存。同时提供应对流量洪峰的弹性伸缩方案及降级熔断机制,并通过Prometheus实现全链路监控。开源建议结构清晰,适合大型社交平台构建与优化。
295 11
|
4月前
|
小程序 安全 关系型数据库
专业打造一款圈子源码软件系统 / 后端 PHP 搭建部署一样实现利益化
本教程详解基于PHP后端与Uni-app的小程序开发全流程,涵盖技术选型、环境搭建、源码导入、接口对接及功能实现。采用Laravel/Symfony框架,结合MySQL/PostgreSQL数据库,使用WebSocket实现实时通信,并集成IM SDK实现音视频聊天。前端使用Uni-app开发,支持跨平台运行。教程包含完整部署流程与安全优化方案,助力快速搭建高性能、安全稳定的小程序系统。
370 5
|
4月前
|
PHP 开发者 索引
探究PHP中常见数组操作函数
在编码实践中,合理利用这些数组操作函数可以简化编程工作,提升代码的效率和可读性。为达到最佳实践,开发者应该通过阅读官方文档来深入理解每个函数的工作原理以及如何在不同的场景下运用它们。
180 8
|
6月前
|
存储 消息中间件 前端开发
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
418 4
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
|
4月前
|
JSON JavaScript 前端开发
实现ROS系统的Websocket传输,向Web应用推送sensor_msgs::Image数据
WebSocket协议具有低延迟和高实时性的特性,适用于实时数据推送。但是,它也依赖于网络条件,因此,在通过WebSocket发送数据时,保证网络稳定性也是重要的。以上步骤为建立基本的WebSocket传输提供了框架,并可以根据实际需求进行调整和优化。
395 0
|
4月前
|
SQL 敏捷开发 安全
PHP 的精髓:灵活高效,为 Web 而生
PHP 的精髓:灵活高效,为 Web 而生
|
5月前
|
监控 安全 BI
医院不良事件管理系统,PHP不良事件系统源代码
医院不良事件管理系统(HAEMS)是医院质量管理体系的核心,用于系统化收集、报告、分析和处理各类不良事件及近似差错,以提升患者安全和运营效率。系统涵盖事件报告、调查分析、改进追踪、统计分析及知识库管理等功能模块,支持多渠道上报、根本原因分析(RCA)、改进措施闭环管理及多维度数据分析。同时,系统注重用户体验与数据安全,符合医疗行业法规标准,通过标准化接口实现与其他系统的无缝集成。HAEMS不仅是工具,更是推动医院安全文化与持续质量改进的核心引擎,助力构建更安全的医疗环境。
251 0
|
7月前
|
Ubuntu PHP Apache
在Ubuntu系统中为apt的apache2编译PHP 7.1的方法
以上就是在Ubuntu系统中为apt的apache2编译PHP 7.1的方法。希望这个指南能帮助你成功编译PHP 7.1,并在你的Apache服务器上运行PHP应用。
189 28