0

我正在做一个积分系统。我制作了一个数组来保存升级所需的点,但它不起作用。

这是代码:

    $level_stats = array();

    $level_stats[1] = 50;

    $level_stats[2] = 100;

    $level_stats[3] = 175;

    $level_stats[4] = 250;

    $level_stats[5] = 350;

    $level_stats[6] = 500;

    $level_stats[7] = 700;

    $level_stats[8] = 950;

    $level_stats[9] = 1250;

    $level_stats[10] = 2000;

    function getLevelRequirementForUser($name){ // function to get needed points to level up
            $level = tonumber(getLevelForUser($name)); // returns 1 (function not shown in code, it works though)
            return $level_stats[$level]; // returns nothing.

    }
4

3 回答 3

1

首先,您的数组是在函数范围之外定义的。当您尝试访问函数内部的 $level_stats 时,它正在访问一个局部变量,在您的情况下该变量是未定义的。这就是为什么它没有返回任何东西。

您可以通过使用 global 关键字或将数组作为参数传递给函数来解决此问题。

1)

     function getLevelRequirementForUser($level_stats, $name){ // function to get needed points to level up

        $level = tonumber(getLevelForUser($name)); // returns 1 (function not shown in code, it works though)
        return $level_stats[$level]; // returns nothing.

      }

2)

     function getLevelRequirementForUser($name){ // function to get needed points to level up
        global $level_stats;
        $level = tonumber(getLevelForUser($name)); // returns 1 (function not shown in code, it works though)
        return $level_stats[$level]; // returns nothing.

}
于 2013-01-27T05:36:22.107 回答
1

这似乎是一个简单的范围界定问题。该$level_stats数组不在函数的范围内。

如果您不需要$level_stats其他任何地方,您可以简单地在您的函数中定义它,例如

function getLevelRequirementForUser($name) {
    $level_stats = array(
        1 => 50,
        2 => 100,
        // etc
    );

    $level = tonumber(getLevelForUser($name));
    return $level_stats[$level];
}
于 2013-01-27T05:37:11.863 回答
0

您需要全球化您的变量:

function getLevelRequirementForUser($name){ 
        global $level_stats;

        $level = tonumber(getLevelForUser($name));
        return $level_stats[$level];
}
于 2013-01-27T05:35:15.453 回答