2013-05-10 37 views
0

我有一個PHP腳本,將字符串附加到文件的末尾。然後,我希望能夠讀取該文件並找出每行發生的次數,然後計算最常見的行和他們的數字。舉例來說,如果我有:使用PHP計算文件中最常見的行?

williamtdr 
chicken 
chicken 
williamtdr 
williamtdr 
pig 

我會得到:

williamtdr, 3 
chicken, 2 
pig, 1 

有沒有辦法在PHP中做到這一點?

謝謝!

+1

你嘗試過什麼嗎? – 2013-05-10 00:17:11

+2

'str_word_count()'可能是一個好的開始,可能與'array_count_values()'相結合。 – kapa 2013-05-10 00:18:51

回答

4
//$data = file_get_contents('yourfile.txt'); // get file contents 
$data = 'williamtdr 
chicken 
chicken 
williamtdr 
williamtdr 
pig'; 

$data = explode("\n", $data); // split data at each newline 
$data = array_count_values($data); // count occurrences of each line 

print_r($data); 

將輸出:

Array 
(
    [williamtdr] => 3 
    [chicken] => 2 
    [pig] => 1 
) 

[DEMO]


如果你想在相同的輸出你的問題,你會遍歷它像這樣:

foreach ($data as $word => $count) 
{ 
    echo $word . ', ' . $count . "\n"; 
} 

或者,更好的辦法是這樣做:

$data = file('yourfile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 
$data = array_count_values($data); 
0

你會如何在現實生活中做到這一點?

你會打開該文件,然後開始計時:

$file = file('file.txt'); 
$counts = array(); 
foreach ($file as $line) { 
    $line = trim($line); 
    if (! isset($counts[$line]) { 
     $counts[$line] = 1; 
    } else { 
     $counts[$line]++; 
    } 
} 
var_dump($counts);