Подсчет различных данных различными способами

Привет, что я пытаюсь сделать, это получить историю заказов от Amazon, используя API MWS, а затем показать данные за день в виде суммы, вот код, который у меня есть в настоящее время и что он выводит.

$date = new DateTime();
$dates = [];

for ($i = 0; $i < 30; $i++) {
$date->sub(new DateInterval('P1D'));
$dates[] = $date->format('Y-m-d');
}

echo "<head><link href='../../../public/css/bootstrap.css' rel='stylesheet' type='text/css'/></head>";
//echo  "<div class='col-md-12'><div class='col-md-2'>Date</div><div class='col-md-2'>Sales</div><div class='col-md-2'>Amount Shipped</div><div class='col-md-2'>Order Total</div><div class='col-md-2'></div><div class='col-md-2'></div></div>";
foreach ($dates as $key => $value) {
foreach ($response->getListOrdersResult()->Orders as $order) {
if (strpos($order->PurchaseDate, $value) !== false) {
if(substr($order->PurchaseDate, 0, -10) == "$value" ) {
$array[] = $order->BuyerName;
}
echo  "<div class='col-md-12'><div class='col-md-2'>$order->BuyerName</div><div class='col-md-2'>$order->OrderStatus</div><div class='col-md-2'>".$order->OrderTotal->Amount."</div><div class='col-md-2'>".$order->NumberOfItemsShipped."</div><div class='col-md-2'>".substr($order->PurchaseDate, 0, -10)."</div></div>";
}
}
}

Таким образом, этот код в настоящее время использует возвращенные данные из API MWS, а затем помещает данные в столбцы, сгруппированные по дате продажи, вот как это выглядит.

 name    status  amount  date

Somebody Shipped 25.981 2015-01-13
Somebody Shipped 7.971 2015-01-13
Somebody Shipped 14.371 2015-01-13
Somebody Shipped 25.981 2015-01-13
Somebody Shipped 25.981 2015-01-13
Somebody Shipped 29.9712015-01-13
------------------------------------------------------------------2015-01-13
Somebody Shipped 25.981 2015-01-12
Somebody Shipped 35.152 2015-01-12
------------------------------------------------------------------2015-01-12

То, что я хочу сделать, это подсчитать, сколько записей на дату, например, есть 6 для 13-го и две для 12-го, тогда я хотел бы добавить все суммы, так что вот что я хотел бы правильную версию из этого для вывода с использованием тех же данных

 Date       Sales    Amount

2015-1-13 6 130,25

2015-01-12   2        60

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

0

Решение

Просто сохраните значения в массиве. Проверьте, что дата в цикле равна предыдущей дате. Если нет, установите предыдущую дату на текущую дату, затем создайте ключ массива, добавьте массив с текущей суммой и установите счетчик на 1, если да, затем включите coutner и добавьте сумму к предыдущей сумме. , Конечно, $response->getListOrdersResult()->Orders следует заказать по дате.

$oldDate = 0;
$amounts = array();
foreach ($response->getListOrdersResult()->Orders as $order) {
if (strpos($order->PurchaseDate, $value) !== false) {
if (substr($order->PurchaseDate, 0, -10) == "$value") {
$array[] = $order->BuyerName;
}
$date = substr($order->PurchaseDate, 0, -10);
if ($date !== $oldDate) {
$oldDate = $date;
$amounts[$date] = array(
'amount' => $order->OrderTotal->Amount,
'cnt' => 1
);
} else {
$amounts[$date]['cnt'] ++;
$amounts[$date]['amount'] += $order->OrderTotal->Amount;
}
}
}
var_dump($amounts);
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector