2012-12-20 24 views
1

我有如下文本文件:顯示同一個詞使用PHP

的text.txt

lebuzzdesbonsplans.com;hotmail.com;26608;828;3.11 
lebuzzdesbonsplans.com;hotmail.fr;24798;876;3.53 
friendcorp.fr;yahoo.fr;11343;0;0 
friendcorp.fr;free.fr;9856;12;.12 
friendcorp.fr;wanadoo.fr;9283;1;.01 
messengear.fr;free.fr;9090;11;.12 
messengear.fr;laposte.net;8107;2;.02 
.................................... 
.................................... 

PHP代碼:

<?php 
      $PMTA_FILE = file_get_contents("text.txt"); 
      $lineFromText = explode("\n", $PMTA_FILE); 
      $title = ""; 
      $domain = ""; 
      foreach($lineFromText as $line){      
        $data = explode(";",$line); 
        $domain = $data[0]; 
        if (array_key_exists($domain, $domains_seen)){ 
         continue; 

        } 
       $domains_seen[$domain] = true; 
       echo $domain; 
       echo "<br>"; 
       echo $data[2]; 
       echo "<br>"; 
      } 


?> 

但結果此代碼:

lebuzzdesbonsplans.com 
26608 
friendcorp.fr 
11343 
messengear.fr 
9090 

我不想要的結果如上,我需要如下結果:

lebuzzdesbonsplans.com 
26608 
24798 
friendcorp.fr 
11343 
9856 
9283 
messengear.fr 
9090 
8107 

任何人都知道幫助我獲得解決方案,請,謝謝。

回答

0
natsort($lineFromText); 
foreach($lineFromText as $line){      
    $data = explode(";",$line); 
    $domain = $data[0]; 
    if (!array_key_exists($domain, $domains_seen)){ 
     echo $domain; 
     echo "<br>"; 
    } 
    echo $data[2]; 
    echo "<br>"; 
    $domains_seen[$domain] = true; 
} 

更新: - 這樣所有的站點都被收集在一起,

+0

感謝它爲上的行首排序文件上面的文本,但如果我改變了這樣的文件中的句子: 'lebuzzdesbonsplans.com; hotmail.com; 26608 ; 828; 3.11 friendcorp.y; yahoo.fr; 11343; 0; 0 lebuzzdesbonsplans.com; hotmail.fr; 24798; 876; 3.53 friendcorp.fr; free.fr; 9856; 12; .12 messengear。 fr; free.fr; 9090; 11; .12 friendcorp.fr; wanadoo.fr; 9283; 1; .01 messengear.fr; laposte.net; 8107; 2; .02'它不起作用。請幫助我。 –

1

您可以使用

$lines = array_reduce(file("text.txt", FILE_IGNORE_NEW_LINES), function ($a, $b) { 
    $b = str_getcsv($b, ";"); 
    $a[$b[0]][] = $b[2]; 
    return $a; 
}); 


foreach($lines as $k => $values) 
{ 
    echo $k,PHP_EOL; 
    echo implode(PHP_EOL, $values); 
    echo PHP_EOL; 
} 

輸出

lebuzzdesbonsplans.com 
26608 
24798 
friendcorp.fr 
11343 
9856 
9283 
messengear.fr 
9090 
8107 
+0

感謝您的回答,但我可以問你一些代碼嗎?我想在'$ b [2]'和'$ b [3]'我聲明'$ total'之後獲得減法,並且'$ total = $ b [2] - $ b [3]'我怎麼能在函數旁邊'echo'變量'$ total'?請幫助我 –

+0

只需添加'$ a [$ b [0]] ['total'] = $ b [2]; - $ b [3]' – Baba

+0

那麼我如何在foreach中顯示它? –

相關問題