You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:36:02