-2

所以我有一个文本文件,其中包含人们输入的游戏列表,所有这些都是这样的:

<tr><td>proatowning</td><td>Final Fantasy X</td></tr>
<tr><td>drunkenveteran</td><td>Trials Evolution</td></tr>

现在我想要的是某种代码,它允许我计算重复项并返回它们的使用次数。

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

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

<tr><td>Final Fantasy X</td><td>5</td></tr>
<tr><td>Trials Evolution</td><td>3</td></tr>

这样我就可以在表格中使用它。如果它只能显示前 10 名投票最多(重复次数最多)的游戏,那就太棒了。

谢谢。

4

2 回答 2

0

我认为您正在寻找类似的东西,只需拉出第二个<td>标签,检查它是否已经在数组中,如果是,则添加到计数中,如果没有,则将元素添加到数组中。然后在最后输出数组。

$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";
}
于 2013-08-05T14:09:21.787 回答
0

我已经重写并简化了来自 Optox 答案的代码,它对我有用:

$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";
}
于 2019-05-29T07:35:57.147 回答