【问题标题】:php csv upload remove duplicatesphp csv上传删除重复项
【发布时间】:2011-07-20 14:26:17
【问题描述】:

在删除重复项(电话号码)的同时使用 PHP 上传 CSV 的最快方法是什么。

例子:

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 这样的函数?

感谢您的帮助:)

【问题讨论】:

    标签: php file-upload csv duplicates


    【解决方案1】:

    是的,就像你说的。上传它,将所有条目放在一个数组中,将 array_unique 覆盖并继续。

    【讨论】:

    • Gerben,将 csv 转换为数组的最佳方法是什么?
    • 嗯,有:php.net/manual/en/function.fgetcsv.php 但是,恕我直言,你最好自己做点什么。所以用 file_get_contents() 打开你的文件,然后用 "\n" 打开你的文件,你现在每行都有一个数组。然后再次爆炸,这次是逗号、分号或您使用的任何分隔符。现在您的新数组中的每一项都已完成。
    【解决方案2】:

    array_unique — 从数组中删除重复值

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

    如果数据如此庞大,PHP 数组很昂贵

    【讨论】:

      【解决方案3】:

      您还可以使用 array_flip 将值作为数组键传递。

      数组的键不能重复。

      【讨论】:

        【解决方案4】:

        您想逐行读取 csv,然后您想使用辅助数组来存储和检查重复项。

        【讨论】:

          【解决方案5】:

          你可以使用array_unique,但是你需要创建一个数组.. 您的 csv 中有一个奇怪的长数字?(447000000000)我认为这对每个用户都是唯一的。所以用那个数字做一个钥匙,然后像下面这样做.. 所以我建议创建一个这样的数组:

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

          现在你可以使用 array_unique 了

          【讨论】:

            【解决方案6】:

            完成这项工作所需的代码非常简单!

            给你:

            <?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
            

            【讨论】:

              猜你喜欢
              • 2019-08-04
              • 2016-03-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-12-07
              • 2018-03-13
              • 2011-02-09
              相关资源
              最近更新 更多