PHP连接两个相同键值的数组

PHP连接两个相同键值的数组,php,arrays,laravel,associative-array,Php,Arrays,Laravel,Associative Array,我想知道如何解决这个问题。我有3(三)个数组,在“data”键中包含嵌套值,如下所示: array:3 [ 0 => array:3 [ "status" => "Terkirim" "warna" => "lightgreen" "data" => array:12 [ 0 => 0 1 => 0 2 => 0 3 => 0 4 => 0 5

我想知道如何解决这个问题。我有3(三)个数组,在“data”键中包含嵌套值,如下所示:

array:3 [
  0 => array:3 [
    "status" => "Terkirim"
    "warna" => "lightgreen"
    "data" => array:12 [
      0 => 0
      1 => 0
      2 => 0
      3 => 0
      4 => 0
      5 => 0
      6 => 3
      7 => 0
      8 => 0
      9 => 0
      10 => 0
      11 => 0
    ]
  ]
  1 => array:3 [
    "status" => "Selesai"
    "warna" => "lightblue"
    "data" => array:12 [
      0 => 0
      1 => 0
      2 => 0
      3 => 0
      4 => 0
      5 => 0
      6 => 3
      7 => 0
      8 => 0
      9 => 0
      10 => 0
      11 => 0
    ]
  ]
  2 => array:3 [
    "status" => "Selesai"
    "warna" => "lightblue"
    "data" => array:12 [
      0 => 0
      1 => 0
      2 => 0
      3 => 0
      4 => 0
      5 => 0
      6 => 0
      7 => 1
      8 => 0
      9 => 0
      10 => 0
      11 => 0
    ]
  ]
]
我的问题是如何在“状态”相同的情况下加入“数据”,或者如果值已经存在于同一索引键上,则如何求和,这就是我想要实现的:

array:3 [
  0 => array:3 [
    "status" => "Terkirim"
    "warna" => "lightgreen"
    "data" => array:12 [
      0 => 0
      1 => 0
      2 => 0
      3 => 0
      4 => 0
      5 => 0
      6 => 3
      7 => 0
      8 => 0
      9 => 0
      10 => 0
      11 => 0
    ]
  ]
  1 => array:3 [
    "status" => "Selesai"
    "warna" => "lightblue"
    "data" => array:12 [
      0 => 0
      1 => 0
      2 => 0
      3 => 0
      4 => 0
      5 => 0
      6 => 3
      7 => 1 <== the joined value 
      8 => 0
      9 => 0
      10 => 0
      11 => 0
    ]
  ]  
]
数组:3[
0=>数组:3[
“状态”=>“Terkirim”
“华纳”=>“浅绿色”
“数据”=>数组:12[
0 => 0
1 => 0
2 => 0
3 => 0
4 => 0
5 => 0
6 => 3
7 => 0
8 => 0
9 => 0
10 => 0
11 => 0
]
]
1=>数组:3[
“状态”=>“Selesai”
“华纳”=>“浅蓝色”
“数据”=>数组:12[
0 => 0
1 => 0
2 => 0
3 => 0
4 => 0
5 => 0
6 => 3
7 => 1  0
9 => 0
10 => 0
11 => 0
]
]  
]

任何帮助都将不胜感激……:)

您可以这样做:

    $joinedArray = [];
    for ($initialArray as $array) {
        if (array_key_exists($array['status'], $joinedArray) {
            for ($joinedArray['data'] as $key, $dataElement) {
                 $joinedArray['data'][$key] = $dataElement + $array['data'][$key];
            }
        } else {
             $joinedArray[$array['status']] = $array;
        }
    }

您可以使用
array\u reduce()
将数组汇总为关联数组。使用
array\u values()
将关联数组转换为简单数组

$arr = //Your array
$result = array_values(array_reduce($arr, function($c, $v){
    if ( !isset( $c[ $v['status'] ] ) ) $c[ $v['status'] ] = $v;
    else foreach( $c[ $v['status'] ]['data'] as $key => &$val ) $val += $v['data'][$key];
    return $c;
}, array()));

echo "<pre>";
print_r( $result );
echo "</pre>";

它只需稍加修改即可工作,你保证了我的安全:)谢谢
Array
(
    [0] => Array
        (
            [status] => Terkirim
            [warna] => lightgreen
            [data] => Array
                (
                    [0] => 0
                    [1] => 0
                    [2] => 0
                    [3] => 0
                    [4] => 0
                    [5] => 0
                    [6] => 3
                    [7] => 0
                    [8] => 0
                    [9] => 0
                    [10] => 0
                    [11] => 0
                )

        )

    [1] => Array
        (
            [status] => Selesai
            [warna] => lightblue
            [data] => Array
                (
                    [0] => 0
                    [1] => 0
                    [2] => 0
                    [3] => 0
                    [4] => 0
                    [5] => 0
                    [6] => 3
                    [7] => 1
                    [8] => 0
                    [9] => 0
                    [10] => 0
                    [11] => 0
                )

        )

)