我有一个如下结果数组:
Array
(
[2013-02-27] => Array
(
[CPD] => 0
[Display] => 0
[Incent] => 0
[Organic] => 1464
[uncategorized] => 0
[total] => 0
)
[2013-02-26] => Array
(
[CPD] => 0
[Display] => 0
[Incent] => 0
[Organic] => 1463
[uncategorized] => 0
[total] => 0
)
[2013-02-25] => Array
(
[CPD] => 0
[Display] => 0
[Incent] => 0
[Organic] => 1459
[uncategorized] => 0
[total] => 0
)
[2013-02-24] => Array
(
[CPD] => 0
[Display] => 2
[Incent] => 0
[Organic] => 1449
[uncategorized] => 0
[total] => 0
)
这基本上是一个运行的总和,我需要将零值替换为更高的值,如果有的话。我的意思是我有2个作为2013-02-24显示的计数。所以我需要将其作为显示类别的其他日期的计数。为了使事情更清楚一点,这是产品的下载次数,而我每天都会从各种来源计算数量。因此,如果它的计数为2到24,那么如果当天的下载量为零,则必须与未来几天相同。如果下载再次发生,它会加起来。所以我正在做的是循环数组并检查零值。如果特定部分的值为零,例如显示,则必须替换为上一个日期中较高的数字(如果有)。那我怎么能这样做呢?
我使用了以下代码:
foreach ($result as $key=>$value){
foreach($categories as $cat){
if($value[$cat->category]==0){
$prev_day = date("Y-m-d",strtotime ( '-1 day' , strtotime ( $key ) )) ;
while ($prev_day>=$from) {
if($result[$prev_day][$cat->category]!=0){
$prev_high_value[$cat->category]=$result[$prev_day][$cat->category];
break;
}
$prev_day = strtotime ( '-1 day' , strtotime ( $prev_day ) ) ;
}
$result[$key][$cat->category]=$prev_high_value[$cat->category];
}
}
}
其中$ category是一个对象,其类别值如显示其他