替换为非零值

时间:2013-08-12 07:54:15

标签: php arrays multidimensional-array

我有以下数组

Array
(
    [2013-08-12] => Array
        (
            [count] => 0
        )

    [2013-08-11] => Array
        (
            [count] => 5
        )

    [2013-08-10] => Array
        (
            [count] => 0
        )

    [2013-08-09] => Array 
        (
            [count] =>3
        )
    [2013-08-08] => Array 
        (
            [count] =>0
        )
    [2013-08-07] => Array 
        (
            [count] =>0
        )
)

现在这实际上是一个总计。因此,在我的视图文件中,我需要以这样一种方式显示计数,即如果可用则显示非零值,否则为零。

在这种情况下,计数从2013-08-08开始,因此可以在它之前的日期显示0。但是对于之后的日期,如果没有日期计数,则需要显示先前的计数。

因此,对于2013-08-10,它需要将计数显示为3和12应该是。这是一些用户注册的总数,因此如果一个日期的计数为零,则需要显示该日期的总计。我怎样才能做到这一点 ?

1 个答案:

答案 0 :(得分:0)

这是非常基本的:

只需遍历您的数组,将计数值添加到正在运行的总计中,并显示该运行总计:

$runningTotal = 0;
foreach($myArray as $key => $value) {
    echo $key, ' => ';
    $runningTotal += $value['count'];
    echo $runningTotal, PHP_EOL;
}

但请确保您的阵列先排序

ksort($myArray);

修改

根据您的评论:

$runningTotal = 0;
foreach($myArray as $key => $value) {
    echo $key, ' => ';
    $runningTotal += $value['count'];
    echo ($value['count'] > 0) ? $value['count'] : $runningTotal;
    echo PHP_EOL;
}

编辑#2

根据后续评论:

$runningTotal = 0;
foreach($myArray as $key => $value) {
    echo $key, ' => ';
    $runningTotal = ($value['count'] > 0) ? $value['count'] : $runningTotal;
    echo $runningTotal, PHP_EOL;
}