繁体   English   中英

获取PHP中先前数组键的值

[英]Get value of previous array key in PHP

我正在尝试使用PHP制作药物半衰期计算器。 我想输入每天在MG中服用的药物量,并在半衰期小时内通过,然后它将计算X倍的时间后还剩下多少药物,以及以前的剂量还剩下多少。

到目前为止,这就是我所拥有的...

function calcHalfLife( $mgTaken , $drugHalfLifeHours , $day = 1 ) {
    //total number of half-lifes elapsed
    $total_half_lifes = ($day * 24) / $drugHalfLifeHours;
    //total reduction in dosage
    $reductionFactor = pow( 0.5 , $total_half_lifes );
    //return the current dosage in the person's system
    return round( $mgTaken * $reductionFactor , 8 );
}

然后,我将在此函数下工作,在该函数下,我可以传递“天数组”和每天获取的MG,然后该函数应迭代该数组,并在每天的值上运行该函数。

function HalfLifeChart(array $days, $drugHalfLifeHours ) {
    $out = array();
    foreach ($days as $day => $dosage) {
        $out[$day] = calcHalfLife( $dosage , $drugHalfLifeHours , 1 );
    }
    return $out;
}

用法示例...

$day = array(1 => 30,
             2 => 0,
             3 => 0,
             4 => 40,
             5 => 30,
             6 => 10,
             7 => 60);

echo '<br><pre>';
print_r(HalfLifeChart( $day, 4.5));
echo '</pre><br><br>';

现在我有了一个很好的开始,但是HalfLifeChart函数是我需要做的更多工作的地方,现在它将对每天传递的数值进行半衰期计算,这很好,但是我需要从前一天,并将其添加到当天的MG中,然后对该数字进行计算。

因此,例如,如果我前一天还剩0.8043mg,今天我服用了30mg,则应在0.8043 + 30上进行计算,然后将结果传递给我的半衰期计算器函数。

我不确定如何从前一天获取结果,请帮忙吗?

为什么不将前一天的结果存储在另一个变量中?

就像是:

function HalfLifeChart(array $days, $drugHalfLifeHours ) {
    $out = array();
    $prevDay = 0;
    foreach ($days as $k => $v) {
        $out[$k] = calcHalfLife( $v , $drugHalfLifeHours , 1 ); //change this
        $prevDay = $out[$k];
    }
    return $out;
}

只是存储它。

function HalfLifeChart(array $days, $drugHalfLifeHours ) {
    $out = array();
    $yesterday = 0;
    foreach ($days as $k => $v) {
        $out[$k] = calcHalfLife($v + $yesterday, $drugHalfLifeHours, 1);
        $yesterday = $out[$k];
    }
    return $out;
}
function HalfLifeChart(array $days, $drugHalfLifeHours ) {
  $out=array();
  $remains=0;
  foreach ($days as $day => $dosage) {
    $total=$remains+$dosage;
    $out[$day]=$total;
    $remains=calcHalfLife( $total , $drugHalfLifeHours , 1 );
  }
  return $out;
}

给你

print_r(HalfLifeChart( $day, 4.5));
Array
(
    [1] => 30
    [2] => 0.74409424
    [3] => 0.01845587
    [4] => 40.00045776
    [5] => 30.99213701
    [6] => 10.76870236
    [7] => 60.26709765
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM