如何在两个给定日期之间添加值

时间:2014-08-02 02:07:14

标签: php date loops multidimensional-array

如何在两个给定日期之间添加值?我有一个包含日期dd.mm.yyyy格式的数组及其对应的值。

数组:

Array
(
[0] => Array
(
[0] => 01.08.2014
[1] => 600
)

[1] => Array
(
[0] => 02.08.2014
[1] => 500
)

[2] => Array
(
[0] => 03.08.2014
[1] => 700
)

[3] => Array
(
[0] => 04.08.2014
[1] => 600
)

[4] => Array
(
[0] => 05.08.2014
[1] => 600
)

[5] => Array
(
[0] => 06.08.2014
[1] => 600
)

)

示例:01.08.2014至03.08.2014 = 1800 我怎么能用循环呢?
我试过这段代码,但它没有用。

$row_length = count($data);
                $sum = 0;
                for ($row = 0; $row < $row_length; $row++) {
                    $ax = $data[$row][1];
                    if ($data[$row][0] == $date1) {
                        $sum =  $ax + $sum;
                        echo $test;
                        if ($data[$row][0] == $date2) {
                            break;
                        }
                    }
                }

2 个答案:

答案 0 :(得分:1)

我认为您可以从为这些数据找到更好的格式中受益。

话虽如此,对于你当前的数组,我认为这会解决问题,如果你将它包装在一个函数中,你可以传入开始和结束: -

$test = array();
$test[0] = array('01.08.2014', 300);
$test[1] = array('02.08.2014', 400);
$test[2] = array('03.08.2014', 800);
$test[3] = array('04.08.2014', 400);
$test[4] = array('05.08.2014', 900);
$test[5] = array('06.08.2014', 100);


$start = new DateTime('01.08.2014');
$end = new DateTime('03.08.2014');
$total = 0;

for ($i = 0; $i < count($test); $i++) {
    $date = new DateTime($test[$i][0]);
    if ($date >= $start && $date <= $end) {
        $total += $test[$i][1];
    }
}
echo $total . "\n";

答案 1 :(得分:1)

试试这个:

row_length = count($data);
                $sum = 0;
                for ($row = 0; $row < $row_length; $row++) {
                    $ax = $data[$row][1];
                    if ($data[$row][0] == $date1 || $sum != 0) {
                        $sum =  $ax + $sum;
                    }
                        if ($data[$row][0] == $date2) {
                            break;
                        }
                    }
                }