在我们的网站上,我们有一个动画,它可以旋转用户的头像。问题是,这实际上是随机的。如果user1有更多(1.00 $)和user2(0.50 $),它可以在动画中显示比user1更多的user2头像。
Avatars在这里被推入阵列(你得到的数值)
SELECT avatar, SUM(value) FROM `game".$gamenum."` GROUP BY `value` DESC
while($row = mysql_fetch_array($rs)) {
$crd .= 'avatar.push(\''.$row["avatar"].'\');';
$i++;
}
现在它在动画中的44个位置上随机
for(var i=1; i <= 44; i++) {
var rand = getRandomInt(0,(avatar.length-1));
$(\'#img\'+i).attr("src",avatar[rand]);
}
这是&#34; getRandomInt&#34;功能
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
我尝试了很多,但我没有找到任何如何显示Avartars,如全额的百分比
此示例中的完整金额为:1.50 $。与user1 + user2的金额相同。
任何人都可以帮助我吗?
答案 0 :(得分:0)
首先,您需要在MySQL查询中按其值排序用户,而不是&#34;分组&#34;他们的价值。相反,如果avatar
不是唯一键,则应按其分组。
您还需要所有用户的所有值的总和。在下面的while循环中计算。
SELECT avatar, SUM(value) FROM `game".$gamenum."` ORDER BY `value` DESC
$sum = 0;
while($row = mysql_fetch_array($rs)) {
$crd .= 'avatar.push(\''.$row["avatar"].'\');';
$i++;
$sum += $row["value"];
}
在此之后,您可能会将头像数组和总$ sum值传递给JavaScript(前端)。
在前端,而不是循环遍历44个图像,循环通过化身。
您还需要跟踪是否所有44张图片都已填满。在这种情况下,我们需要结束循环。
// Keep track of number of images inserted
var imagesInserted = 0;
for(var i = 0; i < avatars.length; i++)
{
// Get avatar's value. Assuming that your JavaScript array contains the avatar's value at the second index and name at the first inde
var val = avatar[i][1];
// Get avatar's percent share in the 44 images
var n = getImagesShare(avatar[i][1], sumOfAllAvatars);
// Check whether 44 images are over
if(imagesInserted <= 44)
{
// Code to insert 'n' images for this user
// Increment the number of images inserted
imagesInserted += n;
}
else
{
// All 44 images have been inserted, end the loop
i = avatars.length + 1;
}
}
最后,计算用户应该获得的图像数量的函数:
function getImagesShare(avatarValue, totalValue)
{
var numberOfImages = Math.floor((avatarValue/totalValue) * 44);
return numberOfImages;
}
以上是基于您的代码的基本实现。性能方面,您应该完成大部分与后端每个用户显示图像数量相关的处理,并且只在前端显示数据,此外还需要更多功能。