计算PHP后输出错误

计算PHP后输出错误,php,percentage,Php,Percentage,我在用PHP进行计算时遇到了一些问题。输出回波的值错误。例如,3500的回波应为475。我得到的是525?我错在哪里 我正在尝试创建一个计算服务费的系统。费用将自动由sum生成。2500欧元的第一部分,服务费为15%。对于第二部分(2500和5000之间的部分),费用将是10%,等等。我已经编写了以下代码,但我的输出(echo)不正确。没有退出它只是不断循环。我的代码有什么问题?有人有什么建议吗。我是一个PHP新手顺便说一句,所以任何帮助将不胜感激 <? ### Sum ### $som

我在用PHP进行计算时遇到了一些问题。输出回波的值错误。例如,3500的回波应为475。我得到的是525?我错在哪里

我正在尝试创建一个计算服务费的系统。费用将自动由sum生成。2500欧元的第一部分,服务费为15%。对于第二部分(2500和5000之间的部分),费用将是10%,等等。我已经编写了以下代码,但我的输出(echo)不正确。没有
退出它只是不断循环。我的代码有什么问题?有人有什么建议吗。我是一个PHP新手顺便说一句,所以任何帮助将不胜感激

<?

### Sum ###
$som = 3500; // example sum 3500 (2500 first part 15% / 1000 second part 10%)

/* Output should be with 3500 : 
15% of 2500 = 375 + 10% of 1000 = 100 (part above 2500) TOTAL of 475. 
My output is 525??? :s */


### 15% first 2500 ###
if ($som < 2500); {
$uitkomst = $som / 100 * 15; 
echo $uitkomst;
exit; }

### 10% between 2500 - 5000 ###
if ($som >2500 && $som < 5000); {   
$iv1 = 2500 / 100 * 15;
$ts = $som - 2500;
$iv2 = $ts / 100 * 10;
$iv1 + $iv2 = $uitkomst; 
echo $uitkomst;
exit; }

### 5% between 5000 - 10.000 ###
if ($som >5000 && $som <10000); {   
$iv1 = 2500 / 100 * 15;
$iv2 = 2500 / 100 * 10;
$ts = $som - 5000;
$iv3 = $ts / 100 * 5;
$iv1 + $iv2 + $iv3 = $uitkomst; 
echo $uitkomst; 
exit; }

### 1% between 10.000 and 200.000 ###
if ($som >10000 && $som <200000); { 
$iv1 = 2500 / 100 * 15;
$iv2 = 2500 / 100 * 10;
$iv3 = 5000 / 100 * 5;
$ts = $som - 10000;
$iv4 = $ts / 100 * 1;
$iv1 + $iv2 + $iv3 + $iv4 = $uitkomst; 
echo $uitkomst;
exit; }

### 0.5% over 200.000 ###
if ($som >200000); {    
$iv1 = 2500 / 100 * 15;
$iv2 = 2500 / 100 * 10;
$iv3 = 5000 / 100 * 5;
$iv4 = 190000 / 100 * 1;
$ts = $som - 200000;
$iv5 = $ts / 100 * 0.5;
$iv1 + $iv2 + $iv3 + $iv4 + $iv5 = $uitkomst; 
echo $uitkomst;
exit; }
?>

您的代码有一些问题

$iv1 + $iv2 = $uitkomst; 
首先也是最重要的一点是,您有一个执行变量赋值的条件语句,但该变量是条件的局部变量,因此如果该条件为非真,则永远不会为以后使用分配该变量

$uitkomst = 0; //you need to add this.
if ($som < 2500); {
$uitkomst = $som / 100 * 15; 
这需要:

$uitkomst = $iv1 + $iv2;
这种调整需要在代码的几个地方进行

$iv1 + $iv2 = $uitkomst; 
最后,还有
,这是你的条件语句之后的线索。虽然我甚至不确定这是如何工作的,但需要删除这些:

if ($som >10000 && $som <200000); { 

如果($som>10000&&$som 10000&&$som您的代码有一些问题

$iv1 + $iv2 = $uitkomst; 
首先也是最重要的一点是,您有一个执行变量赋值的条件语句,但该变量是条件的局部变量,因此如果该条件为非真,则永远不会为以后使用分配该变量

$uitkomst = 0; //you need to add this.
if ($som < 2500); {
$uitkomst = $som / 100 * 15; 
这需要:

$uitkomst = $iv1 + $iv2;
这种调整需要在代码的几个地方进行

$iv1 + $iv2 = $uitkomst; 
最后,在你的条件语句之后还有
。虽然我甚至不知道这个函数是如何工作的,但是需要删除这些:

if ($som >10000 && $som <200000); { 

如果($som>10000&&$som 10000&&$som您的代码有一些问题

$iv1 + $iv2 = $uitkomst; 
首先也是最重要的一点是,您有一个执行变量赋值的条件语句,但该变量是条件的局部变量,因此如果该条件为非真,则永远不会为以后使用分配该变量

$uitkomst = 0; //you need to add this.
if ($som < 2500); {
$uitkomst = $som / 100 * 15; 
这需要:

$uitkomst = $iv1 + $iv2;
这种调整需要在代码的几个地方进行

$iv1 + $iv2 = $uitkomst; 
最后,在你的条件语句之后还有
。虽然我甚至不知道这个函数是如何工作的,但是需要删除这些:

if ($som >10000 && $som <200000); { 

如果($som>10000&&$som 10000&&$som您的代码有一些问题

$iv1 + $iv2 = $uitkomst; 
首先也是最重要的一点是,您有一个执行变量赋值的条件语句,但该变量是条件的局部变量,因此如果该条件为非真,则永远不会为以后使用分配该变量

$uitkomst = 0; //you need to add this.
if ($som < 2500); {
$uitkomst = $som / 100 * 15; 
这需要:

$uitkomst = $iv1 + $iv2;
这种调整需要在代码的几个地方进行

$iv1 + $iv2 = $uitkomst; 
最后,在你的条件语句之后还有
。虽然我甚至不知道这个函数是如何工作的,但是需要删除这些:

if ($som >10000 && $som <200000); { 
if($som>10000&&$som 10000&&$som)
这里的问题是:$uitkomst=$iv1+$iv2;因为在php和其他语言中,赋值是:$var=val;反之亦然……我建议您使用elseif并在elseif之后执行echo,在elseif之后执行exit

这里的问题是:$uitkomst=$iv1+$iv2;因为在php和其他语言中,赋值是:$var=val;反之亦然……我建议您使用elseif并在elseif之后执行echo,在elseif之后执行exit

这里的问题是:$uitkomst=$iv1+$iv2;因为在php和其他语言中,赋值是:$var=val;反之亦然……我建议您使用elseif并在elseif之后执行echo,在elseif之后执行exit


这里的问题是:$uitkomst=$iv1+$iv2;因为在php和其他语言中,赋值是:$var=val;反之亦然……我建议您使用elseif并在elseif之后执行echo,在elseif之后执行exit…

您的if语句为空:

if ($som >2500 && $som < 5000); 
if($som>2500&$som<5000);
丢失“;”

此外,养成将测试括在括号内的习惯,例如

if(($som >10000) && ($som <200000))

if($som>10000)和&($som您的if语句为空:

if ($som >2500 && $som < 5000); 
if($som>2500&$som<5000);
丢失“;”

此外,养成将测试括在括号内的习惯,例如

if(($som >10000) && ($som <200000))

if($som>10000)和&($som您的if语句为空:

if ($som >2500 && $som < 5000); 
if($som>2500&$som<5000);
丢失“;”

此外,养成将测试括在括号内的习惯,例如

if(($som >10000) && ($som <200000))

if($som>10000)和&($som您的if语句为空:

if ($som >2500 && $som < 5000); 
if($som>2500&$som<5000);
丢失“;”

此外,养成将测试括在括号内的习惯,例如

if(($som >10000) && ($som <200000))

if($som>10000)和&($som这里有一个更好的方法。添加任意多的规则

<?php

### Sum ###
$som = 3500; // example sum 3500 (2500 first part 15% / 1000 second part 10%)

$rules = array(
    // lower bound => array( 
    //    'percent' => percent to charge for this rule, 
    //    'upper' => upper bound for this rule 
    // )
    0 => array( 'percent' => 0.15, 'upper' => 2500 ),
    2500 => array( 'percent' => 0.10, 'upper' => 5000 ),
    5000 => array( 'percent' => 0.05, 'upper' => 10000 ),
    10000 => array( 'percent' => 0.01, 'upper' => 200000 ),
    200000 => array( 'percent' => 0.005, 'upper' => null ), 
);

$fee = 0;
$toCalculate = $som;
foreach( $rules as $lower => $rule ) {
    // If there's nothing left to calculate, break
    if($toCalculate <= 0) break;

    $rule['upper'] = $rule['upper'] ? $rule['upper'] : $toCalculate;

    // Amount to apply the current fee percent to
    $current = min($rule['upper'], $toCalculate);

    // Add fee generated by current rule
    $fee += $rule['percent'] * $current;
    $toCalculate -= $current;
}

echo 'Fee: ' . $fee;

这里有一个更好的方法。添加任意多的规则

<?php

### Sum ###
$som = 3500; // example sum 3500 (2500 first part 15% / 1000 second part 10%)

$rules = array(
    // lower bound => array( 
    //    'percent' => percent to charge for this rule, 
    //    'upper' => upper bound for this rule 
    // )
    0 => array( 'percent' => 0.15, 'upper' => 2500 ),
    2500 => array( 'percent' => 0.10, 'upper' => 5000 ),
    5000 => array( 'percent' => 0.05, 'upper' => 10000 ),
    10000 => array( 'percent' => 0.01, 'upper' => 200000 ),
    200000 => array( 'percent' => 0.005, 'upper' => null ), 
);

$fee = 0;
$toCalculate = $som;
foreach( $rules as $lower => $rule ) {
    // If there's nothing left to calculate, break
    if($toCalculate <= 0) break;

    $rule['upper'] = $rule['upper'] ? $rule['upper'] : $toCalculate;

    // Amount to apply the current fee percent to
    $current = min($rule['upper'], $toCalculate);

    // Add fee generated by current rule
    $fee += $rule['percent'] * $current;
    $toCalculate -= $current;
}

echo 'Fee: ' . $fee;

这里有一个更好的方法。添加任意多的规则

<?php

### Sum ###
$som = 3500; // example sum 3500 (2500 first part 15% / 1000 second part 10%)

$rules = array(
    // lower bound => array( 
    //    'percent' => percent to charge for this rule, 
    //    'upper' => upper bound for this rule 
    // )
    0 => array( 'percent' => 0.15, 'upper' => 2500 ),
    2500 => array( 'percent' => 0.10, 'upper' => 5000 ),
    5000 => array( 'percent' => 0.05, 'upper' => 10000 ),
    10000 => array( 'percent' => 0.01, 'upper' => 200000 ),
    200000 => array( 'percent' => 0.005, 'upper' => null ), 
);

$fee = 0;
$toCalculate = $som;
foreach( $rules as $lower => $rule ) {
    // If there's nothing left to calculate, break
    if($toCalculate <= 0) break;

    $rule['upper'] = $rule['upper'] ? $rule['upper'] : $toCalculate;

    // Amount to apply the current fee percent to
    $current = min($rule['upper'], $toCalculate);

    // Add fee generated by current rule
    $fee += $rule['percent'] * $current;
    $toCalculate -= $current;
}

echo 'Fee: ' . $fee;

这里有一个更好的方法。添加任意多的规则

<?php

### Sum ###
$som = 3500; // example sum 3500 (2500 first part 15% / 1000 second part 10%)

$rules = array(
    // lower bound => array( 
    //    'percent' => percent to charge for this rule, 
    //    'upper' => upper bound for this rule 
    // )
    0 => array( 'percent' => 0.15, 'upper' => 2500 ),
    2500 => array( 'percent' => 0.10, 'upper' => 5000 ),
    5000 => array( 'percent' => 0.05, 'upper' => 10000 ),
    10000 => array( 'percent' => 0.01, 'upper' => 200000 ),
    200000 => array( 'percent' => 0.005, 'upper' => null ), 
);

$fee = 0;
$toCalculate = $som;
foreach( $rules as $lower => $rule ) {
    // If there's nothing left to calculate, break
    if($toCalculate <= 0) break;

    $rule['upper'] = $rule['upper'] ? $rule['upper'] : $toCalculate;

    // Amount to apply the current fee percent to
    $current = min($rule['upper'], $toCalculate);

    // Add fee generated by current rule
    $fee += $rule['percent'] * $current;
    $toCalculate -= $current;
}

echo 'Fee: ' . $fee;

你说你的脚本在没有退出的情况下永远运行?你能发布你的循环构造吗?你的$uitkomst赋值是向后的。左边的操作数被设置为右边表达式的值。这看起来很可怕,很难维护,你应该有一个关联数组链接金额到百分比,并使用
while
循环,减去数量直到你达到
0
。现在你重复了很多次,更改百分比或数量将需要大量代码更改。感谢反馈,我将在下次编程时记住这一点。你说你的脚本一直运行,没有退出?你能发布你的循环构造吗t、 请?您的$uitkomst分配是向后的。左操作数设置为表达式o的值