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
        )

これは基本的に実行中の合計であり、ゼロ値がある場合はより高い値に置き換える必要があります。つまり、ディスプレイの 2013 年 2 月 24 日のカウントは 2 です。したがって、これを表示カテゴリの他の日付のカウントにする必要があります。もう少し明確にするために、これは製品のダウンロード数であり、さまざまなソースから毎日のカウントを計算しています. そのため、24 日までのカウントが 2 の場合、その日のダウンロード数が 0 の場合、次の日まで同じである必要があります。ダウンロードが再び発生すると、合計されます。だから私がやっていることは、配列をループしてゼロ値をチェックしていることです。表示などの特定のセクションの値がゼロの場合は、前の日付よりも大きい数値があれば、その数値に置き換える必要があります。どうすればこれを行うことができますか?

私は次のコードを使用しました:

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 や​​ Others のようなカテゴリ値を持つオブジェクトです

4

0 に答える 0