Come rimuovere duplicati CSV in PHP

November 24

Come rimuovere duplicati CSV in PHP


PHP sta per "PHP:. Hypertext Preprocessor" Si tratta di un linguaggio di programmazione utilizzato principalmente per generare dinamicamente contenuti del sito. Come molti linguaggi di programmazione, supporta CSV (Comma Separated Values), che è un formato per la memorizzazione dei dati in file di testo normali. Le interruzioni di riga separano ogni record, e un delimitatore - come ad esempio una virgola o punto e virgola - separa ogni elemento all'interno dei record. Insieme con PHP, è possibile utilizzare i file di dati CSV nelle applicazioni web e conservare i file puliti, eliminando voci duplicate inutili.

istruzione

1 Aprire il file contenente i dati CSV in modalità di sola lettura. Ad esempio, se il nome del file è "test.csv", digitare quanto segue:

if (($ fp = fopen ( "test.csv", "r"))! == false) {

2 Loop attraverso tutte le righe di dati CSV, utilizzando la funzione "fgetcsv." I parametri più importanti della funzione sono file handle $ fp, il numero massimo di caratteri per linea e il delimitatore. Di solito il delimitatore per i file CSV sarà una virgola. Ad esempio, digitare:

while ((dati $ = fgetcsv ($ fp, 1000, ','))! == false) {

3 Creare un nuovo array la cui chiave sarà un hash MD5 dei dati restituiti dalla funzione "fgetcsv". Il valore di ogni elemento dell'array sarà dati stessi. Dal momento che i dati restituiti dal "fgetcsv" è un array, utilizzare la funzione "serializzare" prima di creare l'hash. Questo processo elimina automaticamente le voci duplicate, perché genera una chiave duplicata serie, sovrascrivendo eventuali voci identiche. Ad esempio, digitare:

$ Lista [md5 (serializzare ($ dati))] = $ dati;

4 5 Riaprire il file in modalità di scrittura e passante attraverso ciascuno dei record del nuovo array. Ad esempio, digitare:

if (($ fp = fopen ( "test.csv", "w"))! == false) {

foreach ($ elenco da $ record) {

6 Scrivi ciascuno dei record per il file utilizzando la funzione "fputcsv". Che mette tutto di nuovo in formato CSV. Ad esempio, digitare:

fputcsv ($ fp, $ record, ',');

7