我有以下值的数组
Array
(
[0] => Array
(
[order_date] => 2016-01-01
[sku] => RK101
[qty] => 2
)
[1] => Array
(
[order_date] => 2016-01-01
[sku] => RK101
[qty] => 5
)
[2] => Array
(
[order_date] => 2016-01-01
[sku] => RK102
[qty] => 4
)
[3] => Array
(
[order_date] => 2016-01-02
[sku] => RK101
[qty] => 2
)
[4] => Array
(
[order_date] => 2016-01-02
[sku] => RK101
[qty] => 2
)
)
我想对数组求和,首先按日期,然后按sku,我想要如下结果
Array
(
[2016-01-01] => Array
(
[RK101] => Array
(
[qty] => 7
)
[RK102] => Array
(
[qty] => 4
)
)
[2016-01-01] => Array
(
[RK101] => Array
(
[qty] => 4
)
)
)
我已经探索了堆栈溢出问题,并发现了很多帖子,它们基于一个键来计算总和,在这种情况下,我想首先基于日期然后由sku对数组值求和.
请帮助相同
解决方法:
请尝试以下解决方案:
echo '
';
$array = Array
(
'0' => Array
(
'order_date' => '2016-01-01',
'sku' => 'RK101',
'qty' => 2
),
'1' => Array
(
'order_date' => '2016-01-01',
'sku' => 'RK101',
'qty' => 5
),
'2' => Array
(
'order_date' => '2016-01-01',
'sku' => 'RK102',
'qty' => 4
),
'3' => Array
(
'order_date' => '2016-01-02',
'sku' => 'RK101',
'qty' => 2
),
'4' => Array
(
'order_date' => '2016-01-02',
'sku' => 'RK101',
'qty' => 2
)
);
$new_array = array();
foreach ($array as $a) {
if (!isset($new_array[$a['order_date']][$a['sku']]['qty'])) {
$new_array[$a['order_date']][$a['sku']]['qty'] = 0;
}
$new_array[$a['order_date']][$a['sku']]['qty'] += $a['qty'];
}
print_r($new_array);
输出:
Array
(
[2016-01-01] => Array
(
[RK101] => Array
(
[qty] => 7
)
[RK102] => Array
(
[qty] => 4
)
)
[2016-01-02] => Array
(
[RK101] => Array
(
[qty] => 4
)
)
)
标签:arrays,php
来源: https://codeday.me/bug/20191119/2033235.html