通八洲科技

如何用循环高效生成动态订单表格行?

日期:2025-12-29 00:00 / 作者:心靈之曲

本文介绍如何将重复的表单字段处理逻辑重构为可扩展的 for 循环,避免硬编码 100 个 if 判断,显著提升 php 表单处理代码的可维护性与可读性。

在处理大量结构相似的表单数据(如多道菜品订单)时,手动编写 qta1/portata1/prezzo1 等独立判断语句不仅冗长易错,更难以维护和扩展。理想方案是采用动态键名 + 循环遍历,将重复逻辑抽象为通用流程。

以下为优化后的核心实现:

// 定义最大项目数(可根据实际需求调整,例如 100)
$number_of_inputs = 100;
$ordine = []; // 存储有效订单行的数组

for ($i = 1; $i <= $number_of_inputs; $i++) {
    $qta_key   = 'qta' . $i;
    $portata_key = 'portata' . $i;
    $prezzo_key = 'prezzo' . $i;

    // 检查关键字段是否存在且数量非零(增强健壮性)
    if (isset($_POST[$qta_key]) && is_numeric($_POST[$qta_key]) && (int)$_POST[$qta_key] !== 0) {
        $qta = (int)$_POST[$qta_key];
        $portata = htmlspecialchars($_POST[$portata_key] ?? '', ENT_QUOTES, 'UTF-8');
        $prezzo = floatval($_POST[$prezzo_key] ?? 0);

        $total = number_format($qta * $prezzo, 2, '.', '');
        $ordine[] = "{$portata}{$qta}{$total} €";
    }
}

// 合并所有有效行(安全输出)
$order_table_body = implode('', $ordine);
echo '' . $order_table_body . '
';

关键优化点说明:

⚠️ 注意事项: