Php 替换为非零值
我有以下数组Php 替换为非零值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有以下数组 Array ( [2013-08-12] => Array ( [count] => 0 ) [2013-08-11] => Array ( [count] => 5 ) [2013-08-10] => Array ( [count] => 0 )
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个,则应显示为3。它是一些用户注册的总数,因此如果某个日期的计数为零,则需要显示该日期之前的总数。我该怎么做 这是非常基本的:
只需在数组中循环,将计数值添加到运行总数中,并显示该运行总数:
$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;
}
你试过自己解决这个问题吗?请发布一些代码。但是$value['count']实际上正在运行从DB获取的total,因此添加它将给出错误的结果。例如:这将给出8作为计数5之后的dy的计数。但它本身必须是5,所以你希望看到
2013-08-07 0;2013-08-08 0; 2013-08-09 3; 2013-08-10 3; 2013-08-11 5; 2013-08-12 8;代码>?请参阅编辑。。。虽然很难相信,当你的数据显示第二天3下降到0时,计数是一个连续的总数。。。。除非有3个人删除了他们的帐户,否则我实际上需要2013-08-07 0;2013-08-08 0; 2013-08-09 3; 2013-08-10 3; 2013-08-11 5; 2013-08-12 5;