Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我如何计算下一级别的剩余分数?_Php_Function - Fatal编程技术网

Php 我如何计算下一级别的剩余分数?

Php 我如何计算下一级别的剩余分数?,php,function,Php,Function,我正在开发一个水平测量系统,能够让它像我想要的那样计算水平,但是我想向用户展示在下一个水平之前需要多少经验,而我就是无法计算出来 function experience($L) { $a=0; for($x=1; $x<$L; $x++) { $a += floor($x+300*pow(2, ($x/7))); } return floor($a/4); } function level($experience) { $return

我正在开发一个水平测量系统,能够让它像我想要的那样计算水平,但是我想向用户展示在下一个水平之前需要多少经验,而我就是无法计算出来

function experience($L) {
    $a=0;
    for($x=1; $x<$L; $x++) {
        $a += floor($x+300*pow(2, ($x/7)));
    }
    return floor($a/4);
}
function level($experience) {
    $returned = 0;
    $level = 0;
    while ($returned <= $experience) {
        $level++;
        $returned = experience($level);
    }
    return $level - 1;
}

看起来您的方法工作得很好,也许您可能只需要一个多维数组来构造您的输入

$arr = [
    '0' => [
        'experience' => 7842,
        'level' => 25],
    '1' => [
        'experience' => 7028,
        'level' => 24],
    '2' => [
        'experience' => 6291,
        'level' => 23],
    '3' => [
        'experience' => 5624,
        'level' => 22],
    '4' => [
        'experience' => 5018,
        'level' => 21],
    '5' => [
        'experience' => 4470,
        'level' => 20],
    '6' => [
        'experience' => 3973,
        'level' => 19],
    '7' => [
        'experience' => 3523,
        'level' => 18],
    '8' => [
        'experience' => 3115,
        'level' => 17],
    '9' => [
        'experience' => 2746,
        'level' => 16],
    '10' => [
        'experience' => 2411,
        'level' => 15],
    '11' => [
        'experience' => 2107,
        'level' => 14],
    '12' => [
        'experience' => 1833,
        'level' => 13],
    '13' => [
        'experience' => 1584,
        'level' => 12],
    '14' => [
        'experience' => 1358,
        'level' => 11],
    '15' => [
        'experience' => 1154,
        'level' => 10],
    '16' => [
        'experience' => 969,
        'level' => 9],
    '17' => [
        'experience' => 801,
        'level' => 8],
    '18' => [
        'experience' => 650,
        'level' => 7],
    '19' => [
        'experience' => 512,
        'level' => 6],
    '20' => [
        'experience' => 388,
        'level' => 5],
    '21' => [
        'experience' => 276,
        'level' => 4],
    '22' => [
        'experience' => 174,
        'level' => 3],
    '23' => [
        'experience' => 83,
        'level' => 2],
    '24' => [
        'experience' => 1,
        'level' => 1],
];

function experience($L)
{
    $a = 0;
    for ($x = 1; $x < $L; $x++) {
        $a += floor($x + 300 * pow(2, ($x / 7)));
    }
    return floor($a / 4);
}
function level($experience)
{
    $returned = 0;
    $level = 0;
    while ($returned <= $experience) {
        $level++;
        $returned = experience($level);
    }
    return $level - 1;
}

foreach ($arr as $key => $value) {
    var_dump(level($value["experience"]));
    var_dump(experience($value["level"]));
}
下一个层次的计算可能很简单。你可以只取当前经验值和下一个经验值之间的差值,或者将其除以所有点(例如10000),或者计算一个百分比

您可以根据自己的意愿修改方程式:

$arr=[
'0' => [
“经验”=>7842,
“级别”=>25],
'1' => [
“经验”=>7028,
“级别”=>24],
'2' => [
“经验”=>6291,
“级别”=>23],
'3' => [
“经验”=>5624,
“级别”=>22],
'4' => [
“经验”=>5018,
“级别”=>21],
'5' => [
“经验”=>4470,
“级别”=>20],
'6' => [
“经验”=>3973,
“级别”=>19],
'7' => [
“经验”=>3523,
“级别”=>18],
'8' => [
“经验”=>3115,
“级别”=>17],
'9' => [
“经验”=>2746,
“级别”=>16],
'10' => [
“经验”=>2411,
“级别”=>15],
'11' => [
“经验”=>2107,
“级别”=>14],
'12' => [
“经验”=>1833年,
“级别”=>13],
'13' => [
“经验”=>1584,
“级别”=>12],
'14' => [
“经验”=>1358,
“级别”=>11],
'15' => [
“经验”=>1154,
“级别”=>10],
'16' => [
“经验”=>969,
“级别”=>9],
'17' => [
“经验”=>801,
“级别”=>8],
'18' => [
“经验”=>650,
“级别”=>7],
'19' => [
“经验”=>512,
“级别”=>6],
'20' => [
“经验”=>388,
“级别”=>5],
'21' => [
“经验”=>276,
“级别”=>4],
'22' => [
“经验”=>174,
“级别”=>3],
'23' => [
“经验”=>83,
“级别”=>2],
'24' => [
“经验”=>1,
“级别”=>1],
];
功能体验($L)
{
$a=0;
对于($x=1;$x<$L;$x++){
$a+=底价($x+300*pow(2,($x/7));
}
返回楼层(a/4);
}
功能级别(经验)
{
$returned=0;
$level=0;
while($returned$value){

如果((int)experience($value[“level”])刚刚添加了一个更基本的代码版本。你能更新你的问题,更具体地指出你试图解决的问题吗?我个人不知道你想解决什么。
int(25)
float(7842)
int(24)
float(7028)
int(23)
float(6291)
int(22)
float(5624)
int(21)
float(5018)
int(20)
float(4470)
int(19)
float(3973)
int(18)
float(3523)
int(17)
float(3115)
int(16)
float(2746)
int(15)
float(2411)
int(14)
float(2107)
int(13)
float(1833)
int(12)
float(1584)
int(11)
float(1358)
int(10)
float(1154)
int(9)
float(969)
int(8)
float(801)
int(7)
float(650)
int(6)
float(512)
int(5)
float(388)
int(4)
float(276)
int(3)
float(174)
int(2)
float(83)
int(1)
float(0)