Извлечь сумму «Выручка» из массива - PullRequest
0 голосов
/ 31 октября 2018

У меня есть массив, который является лис, как бы я суммировал доход от конкретных дат? Пожалуйста, смотрите код ниже или здесь https://3v4l.org/eUavL

Как это:

2018-10-28-29.02 USD

2018-10-29-34.73 USD

2018-10-30-27.22 USD

== Сумма 90,97 долларов США

Большое спасибо от помощи !!

<?php

$curl_response = '{
"options": {
    "ranking_metric": "paid_impressions",
    "time_interval": "day",
    "report_type": "time",
    "filters": {
        "pid": "2759"
    },
    "data_source": "detailed",
    "format": "json",
    "end_date": "2018-10-28 23:59",
    "columns": ["paid_impressions", "revenue"],
    "time_zone": "UTC",
    "start_date": "2018-10-26 00:00"
},
"api_url": "http://udmserve.com/udm/radalytics_api.cpx?action=report&api_key=xxxx&api_key=xxxx",
"time": 1540989662,
"rows": [{
    "paid_impressions": "18136",
    "timestamp": "2018-10-26 00:00",
    "_combined_val": "",
    "ranking_col": "49046",
    "revenue": "28.461629999999985",
    "rank": "1",
    "f0_": ""
}, {
    "paid_impressions": "14432",
    "timestamp": "2018-10-27 00:00",
    "_combined_val": "",
    "ranking_col": "49046",
    "revenue": "25.707970000000017",
    "rank": "1",
    "f0_": ""
}, {
    "paid_impressions": "16478",
    "timestamp": "2018-10-28 00:00",
    "_combined_val": "",
    "ranking_col": "49046",
    "revenue": "29.07676000000002",
    "rank": "1",
    "f0_": ""
}]
}';

 $array = json_decode($curl_response,true);
foreach($array['rows'] as $arr){
    echo explode(' ',$arr['timestamp'])[0].'-'.number_format((float)$arr['revenue'], 2, '.', '').' USD'.PHP_EOL;
}

Код также здесь: https://3v4l.org/eUavL

1 Ответ

0 голосов
/ 31 октября 2018

Просто сохраняйте промежуточный итог во время итерации.

Код: ( Демо )

$array = json_decode($curl_response,true);
$sum = 0;
foreach ($array['rows'] as $set) {
    $sum += $revenue = number_format((float)$set['revenue'], 2, '.', '');
    echo explode(' ', $set['timestamp'])[0] , "-$revenue USD\n";
}
echo "\t== " , number_format((float)$sum, 2, '.', '') , " USD";

Выход:

2018-10-26-28.46 USD
2018-10-27-25.71 USD
2018-10-28-29.08 USD
        == 83.25 USD

* обратите внимание, это продолжает добавлять значения number_formatted. Если вам требуется более высокая специфичность, то есть вы хотите сложить более длинные значения с плавающей запятой, а затем отформатировать итоговое значение только один раз в конце, я тоже могу это кодировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...