Php 基于多个值在多维数组中合并数组
如果Php 基于多个值在多维数组中合并数组,php,arrays,multidimensional-array,merge,array-merge,Php,Arrays,Multidimensional Array,Merge,Array Merge,如果部分和时间窗口都相同,我想在这个多维数组中合并数组的属性,将该数组的数量相加。这样做的优雅方式是什么 我尝试过这种方法($sections是多维arry),但这会更改键并只检查一个值: [ 0 => [ 'qty' => 10 'section' => 'VK7B' 'time_window' => 1 ] 1 => [ 'qty' => 1 'sect
部分
和时间窗口
都相同,我想在这个多维数组中合并数组的属性,将该数组的数量
相加。这样做的优雅方式是什么
我尝试过这种方法($sections是多维arry),但这会更改键并只检查一个值:
[
0 => [
'qty' => 10
'section' => 'VK7B'
'time_window' => 1
]
1 => [
'qty' => 1
'section' => 'STIC'
'time_window' => 1
]
2 => [
'qty' => 1
'section' => 'STIC'
'time_window' => 1
]
]
正如@RiggsFolly在评论中指出的,您没有检查时间窗口是否相同 您可以使用以下代码执行此操作:
[
'VK7B' => [
'qty' => 10
'section' => 'VK7B'
'time_window' => 1
]
'STIC' => [
'qty' => 2
'section' => 'STIC'
'time_window' => 1
]
]
请先告诉我们你是怎么做的。初学者是受欢迎的,但我们希望您在提问之前能够努力解决自己的问题。所以这不是一个免费的编码服务,尽管我们非常愿意用您编写的代码帮助您解决问题。编辑我的问题在我看来很好,很优雅,并且可以自我记录。除非您没有检查
时间窗口是否为same@RiggsFolly是的,我不知道该如何为我看到的时间添加第二个检查!因此,通过附加这两个值,可以根据唯一的组合进行检查。
[
'VK7B' => [
'qty' => 10
'section' => 'VK7B'
'time_window' => 1
]
'STIC' => [
'qty' => 2
'section' => 'STIC'
'time_window' => 1
]
]
$new = []
foreach ($sections as $s) {
// you need to save both values (section and time_window) to check both of them
if (isset($new[$s['section'].$s['time_window']])) {
$new[$s['section'].$s['time_window']]['qty'] += $s['qty'];
$new[$s['section'].$s['time_window']]['time_window'] = $s['time_window'];
} else {
$new[$s['section'].$s['time_window']] = $s;
}
}
// Now $new is an associative array => let's transform it in a normal array
$new = array_values($new);