为了账号安全,请及时绑定邮箱和手机立即绑定

PHP:在 for 循环中出现计算问题

PHP:在 for 循环中出现计算问题

PHP
慕标5832272 2022-07-22 15:26:31
对不起这个愚蠢的问题。我想花费 25 个积分,我的可用积分是 30(10,10,10)。但在我下面的示例代码中,最终数量是减(-)5 值而不是 5。请检查我的代码、实际输出和我的预期结果:代码:<?php$content_credit = 25;$data = array(10,10,10);$used_credit = 0;for($i=0; $i<count($data); $i++){    if($content_credit > $used_credit){        $used_credit += $data[$i];        echo "Point: " . $data[$i];        echo " Used: " . $used_credit;        echo " Remaining: " . ($content_credit - $used_credit);    }    echo "<br>";}实际结果:Point: 10 Used: 10 Remaining: 15Point: 10 Used: 20 Remaining: 5Point: 10 Used: 30 Remaining: -5预期结果:Point: 10 Used: 10 Remaining: 15Point: 10 Used: 20 Remaining: 5Point: 10 Used: 25 Remaining: 5
查看完整描述

3 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

$content_credit在第一次迭代中变为 10,然后在第二次迭代中变为 20,因为+=.

因此 25 - 10 - 20 = -5


查看完整回答
反对 回复 2022-07-22
?
PIPIONE

TA贡献1829条经验 获得超9个赞

<?php

$credit_to_spend = 25;

$available_credit = array(10,10,10);

$used_credit = 0;


for( $i=0; $i<count($available_credit); $i++ ){

    if( $credit_to_spend > $used_credit ){


        $required = ($credit_to_spend - $used_credit);

        $used_credit += ($required < $available_credit[$i]) ? $required : $available_credit[$i];

        $remaining = (($required < $available_credit[$i]) ? ($available_credit[$i] - $required): ($credit_to_spend - $used_credit));


        echo "Point: " . $available_credit[$i] 

        . " Used: " . $used_credit 

        . " Remaining: " . $remaining;

    }

    echo "<br>";

}


查看完整回答
反对 回复 2022-07-22
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

您可能正在寻找类似的东西:


<?php

$content_credit = 25;

$data = array(10,10,10);

$total = array_sum($data);

$used_credit = 0;

for($i=0; $i<count($data); $i++){

    if($content_credit > $used_credit){

        $used_credit += $data[$i];

        echo "Point: " . $data[$i];

        echo " Used: " . $used_credit;

        $remaining = $used_credit > $content_credit ? $total - $content_credit :  $total - $used_credit;

        echo " Remaining: " . $remaining;

    }

    echo "<br>";

}

你需要知道你总共有多少信用来计算余额。


$used_credit要获得实际使用的信用额度,只需知道和之间哪个值更小就足够了$content_credit。所以你可以min()用来获取价值。


echo " Used: " . min($used_credit, $content_credit);

类似地,$remaining可以用max()三元运算符结果的值或简单的计算来代替$total - $actual_used。


echo " Remaining: " . max($total - $content_credit,  $total - $used_credit);


查看完整回答
反对 回复 2022-07-22
  • 3 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信