我正在制作积分系统。我创建了一个数组,其中包含升级所需的点,但它不起作用。
以下是代码:
$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.
}
答案 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];
}