我正在尝试使用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上运行,然后通过我的半衰期计算器函数传递。
我不知道如何抓住前一天的结果,请帮忙吗?
答案 0 :(得分:2)
为什么不将前一天的结果存储在另一个变量上?
类似的东西:
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;
}
答案 1 :(得分:1)
只需存放它。
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;
}
答案 2 :(得分:1)
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
)