首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 處理重複表單字段:從數組命名到數據聚合的完整方案

     編輯:PHP 相關知識

當前端表單包含多組同名字段(如動態添加的明細行)時,PHP 需正確接收並聚合數據。本文對比錯誤與正確做法,給出通用處理模式。

錯誤示範:同名覆蓋

<input name="part" /> <input name="transysno" /> ...
<input name="part" /> <input name="transysno" /> ...

$_POST['part'] 只會保留最後一個值,前面的數據丟失。

正確做法:數組命名

<input name="part[]" /> <input name="transysno[]" /> <input name="tranlineid[]" /> <input name="count[]" />
<input name="part[]" /> <input name="transysno[]" /> <input name="tranlineid[]" /> <input name="count[]" />

PHP 接收到的是索引數組:

$_POST['part'] = ['val1', 'val2'];
$_POST['transysno'] = ['sn1', 'sn2'];
// ...

數據聚合邏輯

$groups = [];
$count = count($_POST['part']);
for ($i = 0; $i < $count; $i++) {
    $key = $_POST['part'][$i] . '|' . $_POST['transysno'][$i] . '|' . $_POST['tranlineid'][$i];
    if (!isset($groups[$key])) {
        $groups[$key] = [
            'part' => $_POST['part'][$i],
            'transysno' => $_POST['transysno'][$i],
            'tranlineid' => $_POST['tranlineid'][$i],
            'total_count' => 0
        ];
    }
    $groups[$key]['total_count'] += (int)$_POST['count'][$i];
}

// $groups 即為按三字段去重聚合後的結果
print_r($groups);

擴展建議

  • 前端用 name="items[0][part]" 結構化命名,後端直接 foreach ($_POST['items'] as $item) 遍歷更清晰。
  • 服務端必須驗證數組長度一致性,防止惡意提交導致邏輯錯誤。
  • 大數據量時考慮分批處理或異步隊列。

規範的數組命名 + 服務端聚合邏輯,輕鬆應對動態表單的數據處理挑戰。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved