次のような結果配列があります。
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 のようなカテゴリ値を持つオブジェクトです