文本文件中重复的PHP计数

文本文件中重复的PHP计数,php,file,text,count,duplicates,Php,File,Text,Count,Duplicates,所以我有一个文本文件,上面有人们输入的游戏列表,所有这些都在一个新的页面上,比如: <tr><td>proatowning</td><td>Final Fantasy X</td></tr> <tr><td>drunkenveteran</td><td>Trials Evolution</td></tr> <tr><td>Fin

所以我有一个文本文件,上面有人们输入的游戏列表,所有这些都在一个新的页面上,比如:

<tr><td>proatowning</td><td>Final Fantasy X</td></tr>
<tr><td>drunkenveteran</td><td>Trials Evolution</td></tr>
<tr><td>Final Fantasy X</td><td>5</td></tr>
<tr><td>Trials Evolution</td><td>3</td></tr>
现在我想要的是某种代码,它允许我计算重复项,并返回重复项的使用次数

例如: 5人提交最终幻想X。 3人提交进化试验

然后它应该返回如下内容:

<tr><td>proatowning</td><td>Final Fantasy X</td></tr>
<tr><td>drunkenveteran</td><td>Trials Evolution</td></tr>
<tr><td>Final Fantasy X</td><td>5</td></tr>
<tr><td>Trials Evolution</td><td>3</td></tr>
这样我就可以在桌子上用了。如果它只能显示前10名投票最多、重复最多的游戏,那就太棒了


谢谢。

我想您正在寻找类似的东西,只需拉出第二个标记,检查它是否已经在数组中,如果已经在数组中,则添加到计数,如果没有,则向数组中添加一个元素。然后在末尾输出数组

$lines = file('myfile.txt');
$games = array();

foreach ($lines as $line_num => $line) {
    $pos = strpos($line,'<td>',8);//start the search for <td> after first one
    $game = substr($line,$pos);
    $game = substr($game,4,-4);//remove the <td> tags
    foreach($games as $name => &$count){
        if ($game == $name) $count++;
        else $games[$game] = 1;
    }
}
foreach($games as $name => $count){
    echo "<b>".$count."</b> people submitted \"".$name."\"\n";
}

我重新编写并简化了Optox answer中的代码,它对我有效:

$lines = file('myfile.txt');
$games = array();
foreach ($lines as $line_num => $line) {
    $pos = strpos($line,'<td>',8);//start the search for <td> after first one
    $game = substr($line,$pos);
    $game = substr($game,4,-4);//remove the <td> tags
    if (array_key_exists($game,$games) $games[$game] += 1;
    else $games[$game] = 1;
}
foreach($games as $name => $count){
    echo "<b>".$count."</b> people submitted \"".$name."\"\n";
}

您是否将数据存储在某种数据库或XML中?我只是有点担心你正在使用HTML表格作为存储。这是一个每周都会被清除的列表,人们通过文本框进入游戏并存储到文本文件中。嗯,出于某种原因,它什么也没有显示。最终幻想XX PrutoOutin最终幻想席还没有测试过,你可能需要做一些改变,但是这会让你朝正确的方向发展。如果没有显示,那么可能是语法错误。是的,但我相信这就是我要找的,非常感谢!