0

我有一个结果数组,如下所示:

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

4

0 回答 0