dsqdpn31467 2013-03-20 06:35
浏览 18
已采纳

显示具有先前值的运行总计

I have an array like this

Array
    (
    [2013-03-12] => Array
        (
            [total_clicks] => 2266
            [total_unique_clicks] => 177
        )

    [2013-03-19] => Array
        (
            [total_clicks] => 2647
            [total_unique_clicks] => 241
        )

    [2013-03-20] => Array
        (
            [total_clicks] => 2656
            [total_unique_clicks] => 245
        )
     )

Now I am using the following code for displaying the values

$current=strtotime($from);
$last=strtotime($to);
while($last >= $current){
    $current_date=date("Y-m-d",$last);
    echo $daily_click[$current_date]['total_unique_clicks'];
    $last=strtotime("-1 day",$last);
}

This is displaying the values but if there is no value for a date say '2013-03-18' I need to display the previous value from the array that is with the index 2013-03-12 and the value is 177. It is actually a running total and so i need to display this for other dates with out values. That is it should display the previous count until it is changed. how can I do this ?

I need this order for the dates as I need to show from the latest date first and decreasing

  • 写回答

3条回答 默认 最新

  • dongtan2603 2013-03-20 07:17
    关注
    // get an array of the recorded dates in descending order
    $descDateOrder = $daily_click;
    ksort($descDateOrder);
    $descDateOrder = array_keys(array_reverse($descDateOrder));
    
    $current=strtotime($from);
    $last=strtotime($to);
    
    // initialize to the most recent date <= $last
    $prev_key = 0;
    for($i = 0; $i < count($descDateOrder); $i++) {
        if (strtotime($descDateOrder[$i]) <= $last) {
            $prev_key = $i;
            break;
        }
    }
    
    while($last >= $current) {
        $current_date=date("Y-m-d",$last);
    
        if ($descDateOrder[$prev_key] == $current_date) {
            // use oldest date if we go past it (could break instead, to stop)
            $prev_key = min(count($descDateOrder) - 1, $prev_key + 1);
        } else {
            $current_date = $descDateOrder[$prev_key];
        }
    
        echo $daily_click[$current_date]['total_unique_clicks'];
    
        $last=strtotime("-1 day",$last);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题