我有这个for循环产生10个结果:
<?php
include "dbconnect.php";
$table = "SELECT id FROM players ORDER BY RAND()* ( 1 / percentage)";
for ($i = 0; $i < 10; $i++){
$result[0] = mysql_fetch_array(mysql_query($table));
foreach ($result as $winner){
echo $winner[0] . " ";
}
}
?>
它会生成如下结果:
10 10 11 9 13 11 10 12 8 12
我的问题是如何统计这一代?对于上面的例子,它将是:
8's = 1, 9's = 1, 10's = 3, 11's = 2, 12's = 2, 13's = 1.
我基本上想要计算生成的特定结果的数量。对不起,如果我没有多大意义。
答案 0 :(得分:0)
您需要摆脱MySQL功能,并至少检查PDO或MySQLI。但对于问题的关键:
array_count_values
将计算值。你可以循环它,回声或其他什么示例:
$table = "SELECT id FROM players ORDER BY RAND()*(1/percentage) LIMIT 10";
$result = mysql_query($table);
while($row = mysql_fetch_array($result)) {
$winner[] = $row[0];
}
echo implode(' ', $winner);
foreach(array_count_values($winner) as $number => $count) {
$output = "$number's = $count";
}
echo implode(', ', $output);
您现有的代码可以使随机选择工作看起来像(LIMIT 1
):
$table = "SELECT id FROM players ORDER BY RAND()*(1/percentage) LIMIT 1";
for($i = 0; $i < 10; $i++){
$result = mysql_fetch_array(mysql_query($table));
$winner[] = $row[0];
}
echo implode(' ', $winner);
答案 1 :(得分:0)
如果你查看php手册: http://php.net/manual/en/function.mysql-query.php
然后尝试这样的事情:
while ($row = mysql_fetch_assoc($table)) {
echo $row['column_name'];
echo $row['column_name'];
//.. you get the idea
}
id通常是数据库表中的第一列。这就是为什么你只是获得id。您需要以访问数组的相同方式访问每一行。
我应该指出不推荐使用mysql库。所以你应该考虑使用像PDO这样的东西。