PHP计数从循环生成的结果
我有一个for循环,它生成10个结果: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
<?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
}