数组不工作(自定义点系统)

时间:2013-01-27 05:31:55

标签: php arrays function

我正在制作积分系统。我创建了一个数组,其中包含升级所需的点,但它不起作用。

以下是代码:

    $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.

    }

3 个答案:

答案 0 :(得分: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.

}

答案 1 :(得分:1)

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

如果您在其他地方不需要$level_stats,则可以在功能中简单地定义它,例如

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

    $level = tonumber(getLevelForUser($name));
    return $level_stats[$level];
}

答案 2 :(得分:0)

您需要全局化您的变量:

function getLevelRequirementForUser($name){ 
        global $level_stats;

        $level = tonumber(getLevelForUser($name));
        return $level_stats[$level];
}