【发布时间】:2021-07-06 00:01:13
【问题描述】:
[
0 => [
'qty' => 10
'section' => 'VK7B'
'time_window' => 1
]
1 => [
'qty' => 1
'section' => 'STIC'
'time_window' => 1
]
2 => [
'qty' => 1
'section' => 'STIC'
'time_window' => 1
]
]
我有这个多维数组,如果section 和time_window 相同,我想在其中合并数组,然后为该数组求和qty。有什么优雅的方法可以做到这一点?
我试过这个($sections 是多维数组),但这会改变键并且只检查一个值:
$new = []
foreach ($sections as $s) {
if (isset($new[$s['section']])) {
$new[$s['section']]['qty'] += $s['qty'];
$new[$s['section']]['time_window'] = $s['time_window'];
} else {
$new[$s['section']] = $s;
}
}
[
'VK7B' => [
'qty' => 10
'section' => 'VK7B'
'time_window' => 1
]
'STIC' => [
'qty' => 2
'section' => 'STIC'
'time_window' => 1
]
]
【问题讨论】:
-
对我来说看起来不错、优雅、自我记录。除非您没有检查
time_window是否相同 -
@RiggsFolly 是的,我不确定如何为 time_window 添加第二次检查
标签: php arrays multidimensional-array merge array-merge