2016-03-23 37 views
0

我有涉及一个用户级别为级别所需,这样最低点的数组:如何找到数组中最大值的关键字≤特定值?

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

的关键是水平和值是该电平所需的最低点。

如果用户有一定数量的$points,我需要寻找从对应于其最大价值小于$points$userLV阵列的关键是找到自己的水平。

我该如何做到这一点? (示例数组是PHP,但使用JavaScript或任何语言的示例将会有所帮助。)

+0

我没有看到你想在这里做什么。 – Rizier123

+0

例如UserPoints == 15;和我想要的水平是有没有办法做@Dagon –

回答

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); 
+0

它的数学方式工作谢谢:D –

1

的提案在Javascript

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>'));

相关问题