-4

Why isn't the function level()being run? I run start somewhere else in my PHP code so that is irrelevant. I wrote $LEVEL = level($skillxp) however the "cho 'efniewfb3idn3uo'; never prints out.

What is going on here?

function level($xp) {
    echo 'efniewfb3idn3uo';
    for ($lvl = 1; $lvl < 99; $lvl++) {
        if ($xp < experience($lvl)) {
            $lvl -= 1;
            break;
        }
    }
    return $lvl;
}

function experience($lvl) {
    $xp = 0;
    for($x = 1; $x < $lvl; $x++) {
        $xp += floor($x + 300 * pow(2, ($x / 7)));
    }
    return floor($xp / 4);
}

function start() {
    for ($i = 0; $i < $num_rows; $i++) {
        $res = $con->query("SELECT * FROM hiscores LIMIT $i, 1");
        $xp = $res->fetch_assoc();
        $skillxp = $xp['0'];
        $LEVEL = level($skillxp);
        echo 'efniewfb3idn3uo';
//return $LEVEL = level($skillxp);
}
}
4

1 回答 1

3

您没有在$num_rows之前声明for,因此您的for循环永远不会运行。您需要在函数的开头设置它或将其作为参数传递。

为了清楚起见,您有正确的想法,echo用于测试。但是,当您看到这样的问题时,您也希望echo实际相关变量。

即使使用您发布到完整代码的链接,您也在$num_rows函数范围之外进行定义。您需要$num_rows在您的函数中使用调用global,但通常不建议这样做,除非您确定$num_rows始终相同。即便如此,为什么不直接在函数中设置或一致地传递呢?

有关更多信息,这里是关于变量范围的 PHP 文档。

于 2013-10-30T01:12:50.043 回答