百分比差异循环阵列

时间:2013-06-16 23:08:48

标签: php laravel laravel-4

第一次发布海报,所以我希望你能帮助我,我认为这是一个简单的任务,但无法弄明白。

我有一个名为exports的表,其中包含year和value字段。我目前拥有1992年至2011年的数据。

我想要做的是从数据库中提取这些数据,然后计算年度百分比差异,并将结果存储在一个数组中,以便将数据传递给视图文件。

例如:((1993-1992)/ 1992)* 100)then((1994-1993)/ 1993)* 100)then((1995-1994)/ 1994)* 100)etc。

我需要它灵活,以便我可以添加未来的数据。例如,我最终将添加2012年的数据。

我真的被困在如何推进这个。非常感谢帮助。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,解决方案就不会那么复杂。一个简单的SELECT查询来获取年份和值,然后您可以使用PHP中的循环并计算百分比。像这样:

<?php
// Get all the data from the database.
$sql = "SELECT year, value FROM exports";
$stmt = $pdo->query($sql);

// An array to store the precentages.
$percentages = [];

// A variable to keep the value for the last year, to be
// used to calculate the percentage for the current year.
$lastValue = null;

foreach ($stmt as $row) {
    // If there is no last value, the current year is the first one.
    if ($lastValue == null) {
        // The first year would always be 100%
        $percentages[$row["year"]] = 1.0;
    }
    else {
        // Store the percentage for the current year, based on the last year.
        $percentages[$row["year"]] = (float)$row["value"] / $lastValue;
    }

    // Overwrite the last year value with the current year value
    // to prepare for the next year.
    $lastValue = (float)$row["value"];
}

结果数组如下所示:

array (
    [1992] = 1.0,
    [1993] = 1.2,
    [1994] = 0.95
    ... etc ...
)