2011-03-22 50 views
2

请告诉我最快的方式上传到PHP的CSV,同时删除重复(电话号码)。PHP上传CSV删除重复

例子:

Kyle,Hudson,447000000000,[email protected],CUST-1,CUST-2,CUST-3 
John,Doe,447000000001,[email protected],CUST-1,CUST-2,CUST-3 
John,Doe,447000000001,[email protected],CUST-1,CUST-2,CUST-3 
Jack,Doe,447000000004,[email protected],CUST-1,CUST-2,CUST-3 

应该改为:

Kyle,Hudson,447000000000,[email protected],CUST-1,CUST-2,CUST-3 
John,Doe,447000000001,[email protected],CUST-1,CUST-2,CUST-3 
Jack,Doe,447000000004,[email protected],CUST-1,CUST-2,CUST-3 

我知道如何上传CSV ECT,我只需要知道如何删除重复。

我需要创建一个数组或类似的东西,然后用像array_unique功能?

你的帮助是appriciated :)

回答

2

是啊,像你说的。上传它,把所有的条目放在一个数组中,抛出array_unique并继续。

+0

戈,什么是一个CSV文件转换成数组的最佳方式? – 2011-03-22 16:06:52

+0

那么,有:http://php.net/manual/en/function.fgetcsv.php 但是,恕我直言,你最好让自己的东西。 于是打开与file_get_contents()函数的文件,然后爆炸()为“\ n”,你现在必须每行的数组。然后再次爆炸,这次使用逗号,分号或任何分隔符。现在你有新的数组中的每个项目。 – 2011-03-22 16:09:03

0

array_unique - 如果数据是如此巨大的PHP数组是昂贵

0

您想每一行读取CSV,然后你要使用一个辅助阵列来存储和重复检查。

0

你可以使用array_unique,但你需要创建一个数组.. 你在csv中有一个奇怪的长数?(447000000000)我认为这对每个用户都是唯一的。因此,请从数字键和做喜欢这里underneave .. 所以我建议建立这样一个数组:

Array(
    [447000000000] => Array (
    "name" => "Kyle" 
    "lastname" => "Hudson", 
    "id" => 447000000000 
    [.........] 
), 
    [447000000001] => Array (
    "name" => "John" 
    "lastname" => "Doe", 
    "id" => 447000000001 
    [.........] 
) 
    [.........] 
) 

,现在你可以对

0

使用array_unique你需要的代码使这项工作非常直观!

在这里你去:

<?php 

$myCSV = file($_FILES['file']['tmp_name']); 
//duplicates 
var_dump($myCSV); 
$myCSV = array_unique($myCSV); 
//unique 
var_dump($myCSV); 

//now handle it how you need