我有几个 .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
最佳答案
我会这样做:
$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
关于php - 计算 CSV 列中相似值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14059379/