0

我想从文本文件中读取数据,并且某些数据的组是相同的。我的代码如下:

$PMTA_DATE = date("Y-m-d");
            $PMTA_FILE = file_get_contents("../stats_domain_emetteur_recepteur.affinitead.net.".$PMTA_DATE.".txt");
            $lineFromText = explode("\n", $PMTA_FILE);
            $result = array();
            $cate = "";
            $total ="";
            $fail = "";
            $mailSuc = "";
            $title = "";
            foreach($lineFromText as $line){                    
                    $words = explode(";",$line);
                    echo $words[5];
                    echo "<br>";
                     if($title == ""){
                         $title = $words[0];
                     }

                     $cate .= ','."'$words[6]'";
                     $total .= ','.$words[7];
                     $fail .= ','.$words[8];
                     $mailSuc .= ','.((int)$words[7] - (int)$words[8]);                         

     }

在文件数据中:

2012-12-19-0830;affinitead.net;1409462;231830;16.44;boulevard-des-ventes.com;hotmail.fr;150116;90753;60.45
2012-12-19-0830;affinitead.net;1409462;231830;16.44;boulevard-des-ventes.com;hotmail.com;108478;65766;60.62
2012-12-19-0830;affinitead.net;1409462;231830;16.44;boulevard-des-ventes.com;free.fr;81431;97;.11
2012-12-19-0830;affinitead.net;1409462;231830;16.44;boulevard-des-ventes.com;wanadoo.fr;77786;15;.01
2012-12-19-0830;affinitead.net;1409462;231830;16.44;boulevard-des-ventes.com;gmail.com;77325;1;0
2012-12-19-0830;affinitead.net;1409462;231830;16.44;boulevard-des-ventes.com;orange.fr;44768;13;.02
2012-12-19-0830;affinitead.net;1409462;231830;16.44;boulevard-des-ventes.com;laposte.net;33844;16;.04
2012-12-19-0830;affinitead.net;1409462;231830;16.44;boulevard-des-ventes.com;neuf.fr;29918;26;.08
2012-12-19-0830;affinitead.net;1409462;231830;16.44;boulevard-des-ventes.com;yahoo.fr;23232;1;0
2012-12-19-0830;affinitead.net;1409462;231830;16.44;friendcorp.fr;yahoo.fr;21073;2;0
2012-12-19-0830;affinitead.net;1409462;231830;16.44;boulevard-des-ventes.com;voila.fr;19692;3;.01
2012-12-19-0830;affinitead.net;1409462;231830;16.44;messengear.fr;free.fr;18234;5;.02
2012-12-19-0830;affinitead.net;1409462;231830;16.44;friendcorp.fr;free.fr;17658;12;.06
2012-12-19-0830;affinitead.net;1409462;231830;16.44;lebuzzdesbonsplans.com;yahoo.fr;15856;103;.64
2012-12-19-0830;affinitead.net;1409462;231830;16.44;cwlunit.com;laposte.net;13463;1;0
2012-12-19-0830;affinitead.net;1409462;231830;16.44;boulevard-des-ventes.com;msn.com;12044;7222;59.96
2012-12-19-0830;affinitead.net;1409462;231830;16.44;boulevard-des-ventes.com;live.fr;11491;6983;60.76
2012-12-19-0830;affinitead.net;1409462;231830;16.44;boulevard-des-ventes.com;aliceadsl.fr;11145;17;.15
2012-12-19-0830;affinitead.net;1409462;231830;16.44;cwlunit.com;sfr.fr;11135;1;0
2012-12-19-0830;affinitead.net;1409462;231830;16.44;tendancity.com;yahoo.fr;10631;0;0
2012-12-19-0830;affinitead.net;1409462;231830;16.44;boulevard-des-ventes.com;sfr.fr;9878;1;.01
2012-12-19-0830;affinitead.net;1409462;231830;16.44;boulevard-des-ventes.com;club-internet.fr;9868;4;.04
2012-12-19-0830;affinitead.net;1409462;231830;16.44;friendcorp.fr;wanadoo.fr;9533;0;0
2012-12-19-0830;affinitead.net;1409462;231830;16.44;boulevard-des-ventes.com;aol.com;9253;7729;83.52
2012-12-19-0830;affinitead.net;1409462;231830;16.44;lebuzzdesbonsplans.com;hotmail.com;8656;252;2.91
2012-12-19-0830;affinitead.net;1409462;231830;16.44;messengear.fr;laposte.net;8616;1;.01

正如你所看到的,有些数据是一样的,就像boulevard-des-ventes.com它有很多时间一样,所以我不想要那个。如果它有很多时间,我只想取它 1。

这是我需要的输出:

boulevard-des-ventes.com        hotmail.fr  150116
                                hotmail.com 108478
                                free.fr      81431
                                ..................
                                ..................
                                ..................
friendcorp.fr                   yahoo.fr    21073
                                free.fr      17658
cwlunit.com                     laposte.net  13463
                                sfr.fr       11135
                                ..................
                                ..................
                                ..................
..................................................
..................................................
..................................................
4

1 回答 1

0

使用关联数组来记住您已经处理了哪些域,并在获得重复项时跳到下一行。

$domains_seen = array();
foreach($lineFromText as $line){
  $words = explode(";",$line);
  $domain = $words[5];
  if array_key_exists($domain, $domains_seen) {
    continue;
  }
  $domains_seen[$domain] = true;
  ...
}
于 2012-12-19T09:18:52.150 回答