PHP如何实现酒店订房总费用计算:含房型匹配、人数及税费核算
PHP酒店订房系统订单总费用计算实现方案
前置修正:先处理入住天数计算
你原有代码里的$NUMDAYS是两个时间戳的差值,单位为秒,需要先转换为实际入住天数:
// 时间戳差值转天数,ceil向上取整避免时差/时间格式问题导致天数计算错误 $NUMDAYS = ceil(($date_out - $current_date) / 86400); // 基础合法性校验,避免异常提交 if ($NUMDAYS <= 0) die("入住日期不能晚等于退房日期"); if ($TotPeople <= 0) die("入住人数不能小于1");
核心实现:房型匹配+费用计算
用关联数组做房型和单价的映射,匹配效率更高,也方便后续修改维护房型价格:
// 定义房型与对应单价的映射关系,键名要和前端传的RoomType参数取值完全一致 $roomPriceList = [ 'King Room' => 200, 'Queen Room' => 150, 'Suite' => 300 ]; // 校验房型合法性,匹配单价 if (!isset($roomPriceList[$ROOM])) { die("您选择的房型不存在,请重新选择"); } $currentRoomPrice = $roomPriceList[$ROOM]; // 计算总费用,以下两种方案根据你的实际需求二选一: // 方案1:单价为每晚价格,需乘入住天数(绝大多数酒店计费场景用这个) $total_Charge = $currentRoomPrice * $TotPeople * $NUMDAYS * 1.07; // 方案2:不需要计算入住天数,完全按你给出的公式计算 // $total_Charge = $currentRoomPrice * $TotPeople * 1.07; // 格式化输出金额,保留2位小数符合货币显示规范 echo "订单总费用为:$" . number_format($total_Charge, 2);
额外注意事项
- 你当前直接读取
$_POST参数没有做过滤,后续如果要存入数据库或者输出到页面,要做参数过滤,避免SQL注入、XSS攻击风险 - 支付相关的敏感字段比如卡号不要明文存储、传输,需要做加密处理
内容的提问来源于stack exchange,提问作者Woo
相关产品推荐
相关产品推荐

