Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP计数从循环生成的结果_Php_Loops_For Loop_Count - Fatal编程技术网

PHP计数从循环生成的结果

PHP计数从循环生成的结果,php,loops,for-loop,count,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)); fore

我有一个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] . " ";

        }

    }


?> 
我的问题是我如何计算这一代人?对于上述示例,它将是:

8's = 1, 9's = 1, 10's = 3, 11's = 2, 12's = 2, 13's = 1.

我基本上想计算产生的具体结果的数量。对不起,我说的不太有道理

您需要退出MySQL函数,至少检查PDO或MySQLI。但问题的实质是:

不要在循环中运行完全或有限的查询 查看查询中的LIMIT子句 数组\计数\值将对值进行计数。你可以循环它和回声或者别的什么 例如:

$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);
您使用的现有代码使随机选择工作看起来像限制1:


如果您查看php手册:

然后试着这样做:

while ($row = mysql_fetch_assoc($table)) {
    echo $row['column_name'];
    echo $row['column_name'];
    //.. you get the idea
}
id通常是数据库表中的第一列。这就是为什么您只需要获取id。您需要以访问数组的相同方式访问每一行


我应该指出,mysql库已被弃用。所以你应该考虑使用类似PDO的东西。

请更清楚地问你的问题。您将计算什么?谢谢,但是您的解决方案每次都会生成1个值,有没有一种方法可以多次输出相同的值?我不确定我是否理解rand*1/百分比的查询。也许你现有的代码限制为1rand*1/percentage是一个基于分配给id的百分比的加权随机选择。因此,如果id 10有86%的几率,id 10将有86%的时间被输出。谢谢,我将研究PDO。
$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);
while ($row = mysql_fetch_assoc($table)) {
    echo $row['column_name'];
    echo $row['column_name'];
    //.. you get the idea
}