首页 > 解决方案 > PHP - 如果 int 达到 n

问题描述

采取这些级别:

level1 = 0days
level2 = 30days
level3 = 90days

所有这些级别都是完全动态的。管理员可以随时更改关卡数量和关卡持续时间。

我正在录制numberOfDailyLogin一个系列,所以如果用户即使 1 天没有登录,仪表也会重置为 0。

我正在尝试根据以下内容为用户提供特殊级别标签numberOfDailyLogin

我已经有了一个解决方案,方法是运行while loopfrom 0tonumberOfDailyLogin并更新variable一次>= daysRequired以进行登录。

但我不想要这样,想要一些简单的东西

在这一点上我完全一无所知,我无法对任何值进行硬编码,所以如果你有兴趣请给一些建议。

#编辑1

// json response for levels
{
    "status": 200,
    "body": [
        {
            "name": "level1",
            "after_days": 0,
        },
        {
            "name": "level2",
            "after_days": 50,
        },
        {
            "name": "level3",
            "after_days": 180,
        }
    ]
}

function getLevel($allLevels, $numberOfDailyLogins) {
    foreach ($allLevels as $l) {
        if ($numberOfDailyLogins > $l['after_days']) {
            return $l['name'];
        }
    }
}

问题是如果numberOfDailyLogins=51.. 所以它应该显示 level2... 因为 50 天后 userLevel 达到 level2.. 但我的代码返回 level1 这是完全错误的。

标签: php

解决方案


@brombeer 建议对我有用,谢谢伙计

function getLevel($allLevels, $numberOfDailyLogins) {
    $level = null;
    foreach ($allLevels as $l) {
        if ($numberOfDailyLogins> $l['after_days']) {
            $level = $l;
        }
    }
    // TO-DO... do whatever you want
}

推荐阅读