我有几个.csv文件,我试图循环并读取特定列的值以及计算每个值出现的频率。例如,其中一个文件中的第三列,我们将其称为$col[2]
,如下所示:
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]
中所有值的计数。如何指定我想要foo
和bar
值的数量,只分成哪个计数属于哪个值?例如,结果看起来像这样:
echo $foo_count;
echo $bar_count;
Result:
2
3
答案 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