2

我有几个 .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
4

1 回答 1

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
于 2012-12-27T18:30:32.210 回答