<?php
$array = [
['amount' => 13.31000000, 'i' => 1, 'created_at' => '2022-10-10 23:21:47',],
['amount' => 19.00000000, 'i' => 2, 'created_at' => '2022-10-10 23:21:38',],
['amount' => 17.32000000, 'i' => 2, 'created_at' => '2022-10-09 23:21:47',],
['amount' => 19.15000000, 'i' => 2, 'created_at' => '2022-10-08 23:21:47',],
['amount' => 14.68000000, 'i' => 2, 'created_at' => '2022-10-07 23:21:47',],
['amount' => 18.31000000, 'i' => 2, 'created_at' => '2022-10-06 23:21:47',],
['amount' => 19.48000000, 'i' => 2, 'created_at' => '2022-10-05 23:21:47',],
['amount' => 11.20000000, 'i' => 1, 'created_at' => '2022-10-04 23:21:47',],
['amount' => 12.91000000, 'i' => 2, 'created_at' => '2022-10-03 23:21:47',],
['amount' => 11.55000000, 'i' => 2, 'created_at' => '2022-10-02 23:21:47',],
['amount' => 13.64000000, 'i' => 1, 'created_at' => '2022-10-09 23:21:38',],
['amount' => 18.44000000, 'i' => 1, 'created_at' => '2022-10-08 23:21:38',],
['amount' => 11.56000000, 'i' => 2, 'created_at' => '2022-10-07 23:21:38',],
['amount' => 12.13000000, 'i' => 1, 'created_at' => '2022-10-06 23:21:38',],
['amount' => 13.39000000, 'i' => 1, 'created_at' => '2022-10-05 23:21:38',],
['amount' => 11.36000000, 'i' => 2, 'created_at' => '2022-10-04 23:21:38',],
['amount' => 11.82000000, 'i' => 1, 'created_at' => '2022-10-03 23:21:38',],
['amount' => 14.03000000, 'i' => 1, 'created_at' => '2022-10-02 23:21:38',],
];
const LOOKUP = [1 => 'increase', 2 => 'decrease'];
$defaults = array_fill_keys(LOOKUP, 0);
$result = [];
foreach ($array as $row) {
$date = substr($row['created_at'], 0, 10);
$result[$date] ??= $defaults;
$result[$date][LOOKUP[$row['i']]] += $row['amount'];
}
print_r($result);
- Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.13
- Array
(
[2022-10-10] => Array
(
[increase] => 13.31
[decrease] => 19
)
[2022-10-09] => Array
(
[increase] => 13.64
[decrease] => 17.32
)
[2022-10-08] => Array
(
[increase] => 18.44
[decrease] => 19.15
)
[2022-10-07] => Array
(
[increase] => 0
[decrease] => 26.24
)
[2022-10-06] => Array
(
[increase] => 12.13
[decrease] => 18.31
)
[2022-10-05] => Array
(
[increase] => 13.39
[decrease] => 19.48
)
[2022-10-04] => Array
(
[increase] => 11.2
[decrease] => 11.36
)
[2022-10-03] => Array
(
[increase] => 11.82
[decrease] => 12.91
)
[2022-10-02] => Array
(
[increase] => 14.03
[decrease] => 11.55
)
)
preferences:
82.05 ms | 409 KiB | 5 Q