如何在数组中找到最高值的键≤特定值?

时间:2016-03-23 20:57:29

标签: javascript php arrays points

我有一个数组,它将用户级别与该级别所需的最低点相关联,如下所示:

$userLV = array(0 => 0, 1 => 400, 2 => 800);

关键是级别,值是该级别所需的最小点数。

如果用户具有一定数量的$points,我需要通过从$userLV数组中找到与其最大值<{1}}相对应的键来查找其级别。< / p>

我怎样才能做到这一点? (示例数组是PHP,但JavaScript或任何语言的示例都会有所帮助。)

2 个答案:

答案 0 :(得分:2)

这是一种方法(请注意,这取决于数组已经按升序排序):

$level = 0;                           // start at 0
foreach ($userLV as $lv => $val) {    // loop through the levels
    if ($points >= $val) {
        $level = $lv;                 // reset the level as long as $points >= level value
    } else {
        break;                        // stop when it no longer is
    }
}

另一种选择,如果你想继续为400的每个倍数增加等级,那就是使用数学。

$level = intval($points / 400);

答案 1 :(得分:1)

Javascript中的提案

&#13;
&#13;
function getLevel(points) {
    var level;
    [0, 400, 800].every(function (v, i) {
        if (points >= v) {
            level = i;
            return true;
        }
    });
    return level;
}

document.write([0, 200, 400, 600, 800, 1000].map(function (a) { return 'points: ' + a + ', level: ' + getLevel(a); }).join('<br>'));
&#13;
&#13;
&#13;