PHP数组排序到HTML表

PHP array sorted into HTML table

本文关键字:HTML 数组排序 PHP      更新时间:2023-09-26

我在我的游戏中通过 FTP实现了一个在线评分系统。这里,看一下被更新的文本文件:

User0:1000
User1:1500
User2:250
User3:700

然后,我要做的是创建一个有3列的表:排名|姓名|分数

我已经能够提取每一行的名称和分数:

<table><td>Rank</td><td>Name</td><td>Score</td>
<?php $lines = file("./scores/pk.txt");
for($i=0;$i<count($lines);$i++) {
    echo "<tr><td></td>";
        echo "<td>".substr($lines[$i],0,strpos($lines[$i],":"))."</td>";
        echo "<td>".substr($lines[$i],strpos($lines[$i],":")+1)."</td>";
    echo "</tr>";
} ?> </table<

但是你知道,如果我执行这个,我得到第一列为空(因为"

")

所以我的问题是(最后):

如何按第三列在第一列中分配正确的秩对数组进行排序?

在我的例子中,它看起来像:

排名|姓名 |得分

,,, 1,,,,| User1 | 1500

,,, 2,,,,| User0 | 1000

,,, 3,,,,| User3 | 700

4

,,,,,,,| User2 | 250

这应该可以为您工作:

array_map()explode()循环遍历文件的每一行,中间加一个冒号。

那么你可以简单地用usort()排序。然后你可以在你的表中显示数据。

<?php
    $lines = file("./scores/pk.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    $lines = array_map(function($v){
        return explode(":", $v);
    }, $lines);
    usort($lines, function($a, $b){
        return $b[1] - $a[1];
    });
    echo "<table border='1'><tr><td>Rank</td><td>Name</td><td>Score</td></tr>";
        foreach($lines as $rank => $line)
            echo "<tr><td>" . ($rank+1) . "</td><td>" . $line[0] . "</td><td>" . $line[1] . "</td></tr>";
    echo "</table>";
?>
输出:

Rank    Name    Score
 1     User1    1500
 2     User0    1000
 3     User3    700
 4     User2    250