所以我有一个文本文件,其中包含人们输入的游戏列表,所有这些都是像这样的新内容:
<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个投票最多(最重复)的游戏,那将是非常棒的。
感谢。
答案 0 :(得分: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";
}
答案 1 :(得分: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";
}