我通过mySQL做了一个简单的查询系统,它向我显示了100条记录,我将它们提取到我的游戏中,但我对PHP中的代码有问题。
我想在每行之间有 5char 空间所以我必须使用制表符空格 ( 't't't't't
),但我对当前的系统有问题(例如,如果我有两个不同字符串值 10char 和 2char 的字段,然后使用制表符空间在它们之间腾出空间,我得到不同的结果:
2Char string + 5char space = 7Char
和10Char string + 5Char space = 15Char
$query = "SELECT * FROM `scores` ORDER by `score` DESC LIMIT 100";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$num_results = mysql_num_rows($result);
for($i = 0; $i < $num_results; $i++)
{
$row = mysql_fetch_array($result);
echo $i+1 . "-" . "'t't Name: " .$row['name'] . "'t't't't Device: " . $row['device'] . "'n 't't Difficulty: " . $row['level']. "'t't't't Score: " . $row['score'] . "'n'n";
}
代码输出
1- Name: James Device: HTC OneX
Difficulty: Hard Score: 5760
2- Name: Erika_S Device: PC
Difficulty: Normal Score: 13780
...
我想要的输出
1- Name: James Device: HTC OneX
Difficulty: Hard Score: 5760
2- Name: Erika_S Device: PC
Difficulty: Normal Score: 13780
...
Tab
实际上是一个字符,但以用户想要的方式显示。例如,当您在 IDE 中为 1 个选项卡选择 8 个空格时,您将获得它。有一个奇妙的概念叫做弹性标签,但它只是概念——太可悲了。
结论:你不能按照你用tab
描述的那样做。
您可以执行的操作:
- 计算所需的空间并使用
进行硬编码,但它很脏,您不应该这样做。 - 使用 html 表格
而不是 $row['...'] 使用 sprintf("%-15s", $row['...']),但在每个地方,你需要将数字 (-15) 调整到真正需要的
<?php
$s = 'monkey';
$t = 'many monkeys';
printf("[%s]'n", $s); // standard string output
printf("[%10s]'n", $s); // right-justification with spaces
printf("[%-10s]'n", $s); // left-justification with spaces
printf("[%010s]'n", $s); // zero-padding works on strings too
printf("[%'#10s]'n", $s); // use the custom padding character '#'
printf("[%10.10s]'n", $t); // left-justification but with a cutoff of 10 characters
?>
The above example will output:
[monkey]
[ monkey]
[monkey ]
[0000monkey]
[####monkey]
[many monke]
阅读更多内容,请访问 http://www.php.net/manual/en/function.sprintf.php
如果您不能使用 PrintF,您可以轻松创建自己的函数,该函数执行类似操作,并且足以满足您的需求:
function add_spaces($str, $total_len) {
return $str . substr(" ", 0, $total_len - strlen($str));
}