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 に答える