PHP计算循环生成的结果

时间:2014-11-18 21:10:46

标签: php loops for-loop count

我有这个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.

我基本上想要计算生成的特定结果的数量。对不起,如果我没有多大意义。

2 个答案:

答案 0 :(得分:0)

您需要摆脱MySQL功能,并至少检查PDO或MySQLI。但对于问题的关键:

  1. 不要在循环中运行查询,完整或限制
  2. 查看查询中的LIMIT子句
  3. array_count_values将计算值。你可以循环它,回声或其他什么
  4. 示例:

    $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这样的东西。