一、處理重複資料
如果只是把重複資料找出來,使用者還是需要自己手動刪除。
因此今天進一步讓系統在產生清理後資料時,自動移除重複的資料。
先建立一個$isDuplicate變數,用來判斷目前這一筆資料是不是重複資料。
如果資料已經出現過,就把 $isDuplicate 設定成 true。
這次採用的方式是:保留第一筆資料,移除後面完全相同的資料。
二、不要把重複資料加入清理後資料
原本每一筆資料都會加入$cleanedRows:
$cleanedRows[] = $cleanedRow;
現在改成先判斷是不是重複資料:
if (!$isDuplicate) {
$cleanedRows[] = $cleanedRow;
}
也就是只有不是重複資料的資料,才會加入清理後的資料。這樣原始資料仍然保留,但清理後的資料就不會再包含重複的資料。
三、執行結果
原本測試資料中P009出現兩次:
P009 | 23 | 女 | 168 | 54 | 112/72 | 77 | 皮膚科 | 2026/09/05
P009 | 23 | 女 | 168 | 54 | 112/72 | 77 | 皮膚科 | 2026/09/05
執行清理後,系統會顯示:
【重複資料】P009 → 此筆資料將從清理後資料中移除
而在「清理後資料預覽」中,P009只會保留一筆。
四、原始資料並沒有被修改
原始的CSV仍然保留完整內容,而系統另外產生$cleanedRows作為清理後資料。
這樣做的好處除了是之後可以做比較之外,也不會因為清理錯誤而失去原始資料。