如何通过PHP实现按输入件数配对处理多组包裹尺寸参数并计算
多组包裹尺寸参数配对处理实现方案
前端代码调整
原有输入框中ht和bd的type="number"属性不支持输入英文逗号,需要修改为type="text",可额外增加正则校验限制用户仅输入数字和逗号,调整后的完整表单示例如下:
<form method="post" action="处理文件路径.php"> <input type="number" name="no_pi" id="no_pi" class="form-control" placeholder="Number of Pieces" min="1" required> <input type="text" name="ht" id="ht" placeholder="Height of Package" class="form-control" pattern="(\d+,)*\d+" required> <input type="text" name="bd" id="bd" placeholder="Breadth of Package" class="form-control" pattern="(\d+,)*\d+" required> <button type="submit">提交</button> </form>
PHP后端处理逻辑
处理流程如下:
- 接收提交的三个参数,做基础合法性校验
- 将高度、宽度字符串按英文逗号分割为数组,清洗每个值的空白字符并转换为数值
- 校验两个数组的长度是否与件数一致,且所有值均为有效正数
- 按索引配对每组尺寸参数,逐组执行后续计算
完整示例代码:
<?php // 仅处理POST请求 if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 1. 接收参数 $no_pi = (int)$_POST['no_pi']; $ht_str = trim($_POST['ht']); $bd_str = trim($_POST['bd']); // 2. 基础校验:件数必须是正整数 if ($no_pi < 1) { echo "错误:件数必须为正整数"; exit; } // 3. 分割尺寸字符串为数组 $ht_arr = explode(',', $ht_str); $bd_arr = explode(',', $bd_str); // 4. 清洗数组:去除空白、转换为浮点数 $ht_arr = array_map(function($val) { return (float)trim($val); }, $ht_arr); $bd_arr = array_map(function($val) { return (float)trim($val); }, $bd_arr); // 5. 校验数组长度是否匹配件数 if (count($ht_arr) !== $no_pi || count($bd_arr) !== $no_pi) { echo "错误:高度和宽度的数值个数必须和件数一致"; exit; } // 6. 校验所有尺寸都是正数 foreach ($ht_arr as $v) { if ($v <= 0) { echo "错误:高度数值必须为正数"; exit; } } foreach ($bd_arr as $v) { if ($v <= 0) { echo "错误:宽度数值必须为正数"; exit; } } // 7. 配对逐组处理 for ($i = 0; $i < $no_pi; $i++) { $current_ht = $ht_arr[$i]; $current_bd = $bd_arr[$i]; // 此处填写你的后续计算逻辑,示例: echo "第".($i+1)."件包裹:高度{$current_ht},宽度{$current_bd}<br>"; } } ?>
功能验证示例
用户输入:
- 件数:3
- 高度:20,20,30
- 宽度:10,10,20
处理后会输出三组配对数据,逐组执行计算逻辑。
内容的提问来源于stack exchange,提问作者Bryan Christy
相关产品推荐
相关产品推荐

