我有涉及一个用户级别为级别所需,这样最低点的数组:如何找到数组中最大值的关键字≤特定值?
$userLV = array(0 => 0, 1 => 400, 2 => 800);
的关键是水平和值是该电平所需的最低点。
如果用户有一定数量的$points
,我需要寻找从对应于其最大价值小于$points
的$userLV
阵列的关键是找到自己的水平。
我该如何做到这一点? (示例数组是PHP,但使用JavaScript或任何语言的示例将会有所帮助。)
我有涉及一个用户级别为级别所需,这样最低点的数组:如何找到数组中最大值的关键字≤特定值?
$userLV = array(0 => 0, 1 => 400, 2 => 800);
的关键是水平和值是该电平所需的最低点。
如果用户有一定数量的$points
,我需要寻找从对应于其最大价值小于$points
的$userLV
阵列的关键是找到自己的水平。
我该如何做到这一点? (示例数组是PHP,但使用JavaScript或任何语言的示例将会有所帮助。)
以下是一种实现方法(请注意,这取决于阵列已按升序排序):
$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);
它的数学方式工作谢谢:D –
的提案在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>'));
我没有看到你想在这里做什么。 – Rizier123
例如UserPoints == 15;和我想要的水平是有没有办法做@Dagon –