PHP - 以更高的百分比显示更多用户

时间:2016-11-06 05:46:23

标签: php

在我们的网站上,我们有一个动画,它可以旋转用户的头像。问题是,这实际上是随机的。如果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的金额相同。

任何人都可以帮助我吗?

1 个答案:

答案 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;
}

以上是基于您的代码的基本实现。性能方面,您应该完成大部分与后端每个用户显示图像数量相关的处理,并且只在前端显示数据,此外还需要更多功能。