Php 如何计算列中的相似单词

Php 如何计算列中的相似单词,php,csv,Php,Csv,我有一个CSV文件,想在9000行的列中计算重复的单词 文件示例 谢谢 好的 不错 谢谢 不错 谢谢 所需的结果类似于 谢谢=3,好=1,好=2。 我找到了下面的PHP代码,但无法使其正常工作,并将CSV文件的内容复制到file.txt我是否做错了什么 <?php $file = (''C:\Users\wnmb4793\Desktop\Test\file.txt''); $fh = fopen($file, 'rb'); $tag = array(); while($col =

我有一个CSV文件,想在9000行的列中计算重复的单词

文件示例
谢谢
好的
不错
谢谢
不错
谢谢

所需的结果类似于

谢谢=3,好=1,好=2。

我找到了下面的PHP代码,但无法使其正常工作,并将CSV文件的内容复制到
file.txt
我是否做错了什么

<?php
$file = (''C:\Users\wnmb4793\Desktop\Test\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;
}
?>

我看到的第一个问题是:

 $file = (''C:\Users\wnmb4793\Desktop\Test\file.txt'');
应该是

 $file = ('C:\Users\wnmb4793\Desktop\Test\file.txt');
下一步

您需要循环浏览文件中的每个单词。比如:

while we are not at the end of the file.
     if( we have seen this word before ) // Think about the isset() method.
         find it's entry and add one to it's value
     else
         add a new entry, and set it's value to 1.
end while

我已经给了你伪代码。现在将其转换为PHP!:)

只是一些错误。你的代码可以工作

$file = 'C:\Users\wnmb4793\Desktop\Test\file.txt';

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

$tag = array();
while($col = fgetcsv($fh)) 
{
  $value = $col[0]; // change 0 to column number you need, 0 - first 
  if ( isset($tag[$value]) ) 
    $tag[$value]++;
    else 
    $tag[$value] = 1;
}

print_r($tag);
结果:

Array
(
    [thanks] => 3
    [ok] => 1
    [nice] => 2
)

老实说,只需将csv导入数据库,然后使用SQL向您显示所有单词+出现次数,可能会更容易。当您尝试运行代码时会发生什么情况?根据您的注释:
$value=$col[2];//将2更改为所需的列号
——显然您需要选择正确的列。安德烈沃尔克的答案是正确的。使用$value=$col[0];对于一列文件的第一列,fgetcsv的值应该是$col[0],而不是$col[2],这无关紧要。使用csv,但别忘了设置$col[列号],谢谢你的帮助Andrey,我想让结果不对齐,但由于原始海报提供了工作代码,他错过了一个简单的细节。伪代码在这里毫无用处。同意,但OP也提到他们刚刚复制并粘贴了。如果OP忽略了它,至少他们可以理解它背后的方法,但是这并不能严格回答问题,所以你是对的:)