簡體   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