代码之家  ›  专栏  ›  技术社区  ›  Darren

HTTP API的计数和打印值

  •  0
  • Darren  · 技术社区  · 7 年前

    正在查找有关计算HTTP API中存在的所有值的帮助。下面的链接按日期输出多个数据点的值。我想要实现的是 计数 在每个值上

    a:2:{s:10:"2018-01-03";a:9:{s:12:"nb_pageviews";d:2031;}s:10:"2018-01-04";a:9:{s:12:"nb_pageviews";d:25;}
    

    我想将上面的nb\U页面视图作为一个键输出,并将日期值组合为2056。

    API的链接示例为 https://demo.piwik.org/?module=API&method=Actions.get&idSite=7&period=day&date=last2&format=php&token_auth=anonymous

    显示此内容的PHP是

    $url = "https://demo.piwik.org/";
    $url .= "?module=API&method=Actions.get";
    $url .= "&idSite=7&period=day&date=last2";
    $url .= "&format=php";
    $url .= "&token_auth=anonymous";
    
    $fetched = file_get_contents($url);
    $content = unserialize($fetched);
    
    // case error
    if (!$content) {
       print("NO DATA");
    }
    
    foreach ($content as $row) {
       $pageviews = $row['nb_pageviews'];
    
       print("<div>$pageviews</div>\n");       
    }
    

    请注意,上面的链接包含多个其他值,我也希望使用这些值,但为了确保这个问题的可读性,我将这些值保持简单,并且只保留其中一个。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Cameron Hurd    7 年前

    只需使用 combined assignment operator ,并确保在循环之前将默认值设置为0。

    $fetched = 'a:2:{s:10:"2018-01-03";a:9:{s:12:"nb_pageviews";d:2031;s:17:"nb_uniq_pageviews";d:964;s:12:"nb_downloads";d:2;s:17:"nb_uniq_downloads";d:2;s:11:"nb_outlinks";d:68;s:16:"nb_uniq_outlinks";d:64;s:11:"nb_searches";d:33;s:11:"nb_keywords";d:16;s:19:"avg_time_generation";d:0.78600000000000003;}s:10:"2018-01-04";a:9:{s:12:"nb_pageviews";d:25;s:17:"nb_uniq_pageviews";d:10;s:12:"nb_downloads";i:0;s:17:"nb_uniq_downloads";i:0;s:11:"nb_outlinks";d:1;s:16:"nb_uniq_outlinks";d:1;s:11:"nb_searches";d:2;s:11:"nb_keywords";d:2;s:19:"avg_time_generation";d:0.79300000000000004;}}';
    
    $content = unserialize($fetched);
    
    // case error
    if (!$content) {
       print("NO DATA");
    }
    
    $pageviews         = 0;
    $uniq_pageviews    = 0;
    // and on, with your other vars you're looking to sum...
    
    foreach ($content as $row) {
       $pageviews      += $row['nb_pageviews'];
       $uniq_pageviews += $row['nb_uniq_pageviews'];
    }
    
    var_export(['pageviews' => $pageviews, 'uniq_pageviews' => $uniq_pageviews]);
    

    工作演示: https://eval.in/930183

    // Output
    array (
        'pageviews' => 2056.0,
        'uniq_pageviews' => 974.0,
    )
    

    要打印这些值,可以替换 var_export 用这样的方式排队:

    $data = [
        'pageviews'      => $pageviews,
        'uniq_pageviews' => $uniq_pageviews
    ];
    

    您可以将其输出为HTML格式,如下所示:

    <div class="col-md-4"><?php echo $data['pageviews']; ?></div>
    <div class="col-md-4"><?php echo $data['uniq_pageviews']; ?></div>
    
    推荐文章