计算CSV列中类似值的数量

时间:2012-12-27 18:25:27

标签: php csv

我有几个.csv文件,我试图循环并读取特定列的值以及计算每个值出现的频率。例如,其中一个文件中的第三列,我们将其称为$col[2],如下所示:

HEADER
foo
bar
bar
bar
foo

我可以使用此代码计算foobar在文件中出现的次数:

$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 个答案:

答案 0 :(得分: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