我有一个结果数组,如下所示:
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 的 Display 计数。因此,我需要将其作为显示类别的其他日期的计数。为了让事情更清楚一点,这是一个产品的下载次数,我正在计算每天从各种来源获得的下载次数。因此,如果它在 24 日之前的计数为 2,那么如果当天的下载量为零,那么它在接下来的几天内必须是相同的。如果再次发生下载,它将累加。所以我正在做的是循环数组并检查零值。如果特定部分的值为零,例如显示,则必须将其替换为上一个日期的较高数字(如果有)。那么我该怎么做呢?
我使用了以下代码:
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 是具有类别值的对象,例如 Display an others