首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP中获取上一个数组键的值

在PHP中获取上一个数组键的值
EN

Stack Overflow用户
提问于 2012-02-16 01:56:45
回答 3查看 498关注 0票数 1

我正在尝试用PHP做一个药物半衰期计算器。我想在MG中传递每天服用的药物的量,并在半衰期小时内传递,然后它将计算在X个时间量之后还剩下多少药物,以及之前的剂量还剩下多少。

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

代码语言:javascript
复制
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,然后该函数应该迭代该数组,并对每一天的值运行上面的函数。

代码语言:javascript
复制
function HalfLifeChart(array $days, $drugHalfLifeHours ) {
    $out = array();
    foreach ($days as $day => $dosage) {
        $out[$day] = calcHalfLife( $dosage , $drugHalfLifeHours , 1 );
    }
    return $out;
}

示例用法...

代码语言:javascript
复制
$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.8043毫克,今天我服用了30毫克,那么计算应该在0.8043+30上运行,然后通过我的半衰期计算器函数传递结果。

我不知道如何抓取前一天的结果,有什么帮助吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-16 02:10:07

代码语言:javascript
复制
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;
}

为您提供

代码语言:javascript
复制
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
)
票数 1
EN

Stack Overflow用户

发布于 2012-02-16 02:02:16

为什么不把前一天的结果存储在另一个变量上呢?

类似于:

代码语言:javascript
复制
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;
}
票数 2
EN

Stack Overflow用户

发布于 2012-02-16 02:04:43

就把它存起来吧。

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9298642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档