Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于多个值在多维数组中合并数组_Php_Arrays_Multidimensional Array_Merge_Array Merge - Fatal编程技术网

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);