[英]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.