php csv загрузить удалить дубликаты - PullRequest
2 голосов
/ 22 марта 2011

Какой самый быстрый способ загрузить CSV с PHP при удалении дубликатов (номер телефона).

Пример:

Kyle,Hudson,447000000000,me@you.com,CUST-1,CUST-2,CUST-3
John,Doe,447000000001,me@you.com,CUST-1,CUST-2,CUST-3
John,Doe,447000000001,me@you.com,CUST-1,CUST-2,CUST-3
Jack,Doe,447000000004,me@you.com,CUST-1,CUST-2,CUST-3 

Должен стать:

Kyle,Hudson,447000000000,me@you.com,CUST-1,CUST-2,CUST-3
John,Doe,447000000001,me@you.com,CUST-1,CUST-2,CUST-3
Jack,Doe,447000000004,me@you.com,CUST-1,CUST-2,CUST-3 

Я знаю, как загрузить CSV-файл, мне просто нужно знать, как удалить дубликаты.

Нужно ли мне создать массив или что-то подобное, а затем использовать функцию типа array_unique?

Ваша помощь ценится:)

Ответы [ 6 ]

2 голосов
/ 22 марта 2011

Да, как вы сказали. Загрузите его, поместите все записи в массив, перекиньте array_unique и продолжите.

0 голосов
/ 22 марта 2011

Код, который вам нужен для этой работы, довольно прост!

Вот, пожалуйста,

<?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
0 голосов
/ 22 марта 2011

Вы можете использовать array_unique, но тогда вам нужно создать массив. У вас есть странное длинное число в вашем CSV? (447000000000), я полагаю, это уникально для каждого пользователя.Итак, сделайте ключ из этого числа и сделайте это, как показано ниже. Итак, я предлагаю создать массив следующим образом:

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

, и теперь вы можете использовать array_unique для этого

0 голосов
/ 22 марта 2011

Вы хотите прочитать csv по каждой строке, а затем использовать вспомогательный массив для хранения и проверки на наличие дубликатов.

0 голосов
/ 22 марта 2011

Также вы можете использовать array_flip для передачи значений в качестве ключа массива.

Ключи массива не могут быть дубликатами.

0 голосов
/ 22 марта 2011

array_unique - удаляет повторяющиеся значения из массива

http://php.net/manual/en/function.array-unique.php

Если данные такие огромные, PHP-массивы стоят дорого

...