2012-12-27 36 views
2

我有幾個.csv文件,我試圖循環讀取特定列的值以及計算每個值出現的頻率。例如,在其中一個文件的第三列,我們把它叫做$col[2],看起來是這樣的:計數CSV列中的相似值的數量

HEADER 
foo 
bar 
bar 
bar 
foo 

我可以指望的時候都foo數量和bar使用此代碼顯示在文件中:

$file = ('Path/To/Random/File.txt'); 

$fh = fopen($file, 'rb'); 

$tag = array(); 
while($col = fgetcsv($fh)) { 
    $tag[$col[2]]++; 
} 

print_r($tag); 

Result: 

5 

但是,此代碼返回col[2]中所有值的計數。我如何指定我希望foobar值的數目,只能分成哪些數屬於哪個值?例如,結果會是這個樣子:

echo $foo_count; 
echo $bar_count; 

Result: 

2 
3 
+1

'print_r($ tag)'does不打印你告訴我們的價值。它應該打印每個列值的計數,因爲'$ tag'是一個數組(即'foo'和'bar') – knittl

回答

2

我會做:

$file = ('Path/To/Random/File.txt'); 

$fh = fopen($file, 'rb'); 

$tag = array(); 
while($col = fgetcsv($fh)) { 

if (isset($tag[$col[2]])) { 
    $tag[$col[2]]++; 
} 
else { 
    $tag[$col[2]] = 1; 
} 

一定$col[2]實際上包含了要測量/迭代值

一次,你應該有一個陣列,使用print_r來檢查

'foo' => 2, 
'bar' => 3 
+0

這很好用,謝謝! –