1

次のような CSV ファイルがあります。

account, name, email,
123, John, dsfs@email.com
123, John, dsfs@email.com
1234, Alex, ala@email.com

重複する行を削除する必要があります。次のようにします。

$inputHandle = fopen($inputfile, "r");
$csv = fgetcsv($inputHandle, 1000, ",");

$accounts_unique = array();

$accounts_unique = array_unique($csv);  

print("<pre>".print_r($accounts_unique, true)."</pre>");

しかし、最初のヘッダー行だけを print_r に入れます。1. CSV ファイルから重複行を消去する 2. これらの重複のリストを作成できます (別の CSV に保存することもできます)。

4

3 に答える 3

1

とにかくCSVからデータをループする場合は、このようなことをするのが最善だと思います。

$dataset = array();
foreach($line as $data){
    $dataset[sha1($data)] = $data;
}
于 2014-06-08T00:27:02.160 に答える
1

array_unique よりも高速な次のルートに進みます。

$inputHandle = fopen($inputfile, "r");
$csv = trim(fgetcsv($inputHandle, 1000, ","));
$data = array_flip(array_flip($csv)); //removes duplicates that are the same
$dropped = array_diff_key($csv, $data); //Get removed items.

注 -- array_unique()andは、まったくarray_flip(array_flip())同じ重複行に対してのみ一致します。

私のコメントからの情報を含むように更新されました。

于 2013-07-01T13:59:01.210 に答える