合并关联数组中键值对的计数

Merge with count for key value pair in associative array

我有这个数组,如果 x_axis 相同,我想合并 y_axis,请查看两个示例,这样您就会了解我需要什么。

array:4 [
  0 => array:2 [
    "x_axis" => 8
    "y_axis" => 1
  ]
  1 => array:2 [
    "x_axis" => 9
    "y_axis" => 1
  ]
  2 => array:2 [
    "x_axis" => 11
    "y_axis" => 2
  ]
  3 => array:2 [
    "x_axis" => 11
    "y_axis" => 3
  ]
]

喜欢

array:3 [
  0 => array:2 [
    "x_axis" => 8
    "y_axis" => 1
  ]
  1 => array:2 [
    "x_axis" => 9
    "y_axis" => 1
  ]
  2 => array:2 [
    "x_axis" => 11
    "y_axis" => 5
  ]
]

我写了一个函数。我在哪里包括两个两个循环。第一个循环创建一个新数组,您可以在其中计算值。第二个创建最终数组,在您需要的模式中分配值。

<?php

$arr = [
    ['x_axis' => 8, 'y_axis' => 1],
    ['x_axis' => 9, 'y_axis' => 1],
    ['x_axis' => 11, 'y_axis' => 2],
    ['x_axis' => 11, 'y_axis' => 3],
];

function make($arr) {
    $xy = [];
    foreach($arr as $k => $v) {
        
        $xy[$v['x_axis']] = isset($xy[$v['x_axis']]) ?  $xy[$v['x_axis']] + $v['y_axis'] : $v['y_axis'];
    }
    $arrNew = [];
    foreach($xy as $k => $v) {
        $arrNew[] = ['x_axis' => $k,  'y_axis' => $v];
    }   
    return $arrNew;
}

print_r( make($arr) );

输出

Array
(
    [0] => Array
        (
            [x_axis] => 8
            [y_axis] => 1
        )

    [1] => Array
        (
            [x_axis] => 9
            [y_axis] => 1
        )

    [2] => Array
        (
            [x_axis] => 11
            [y_axis] => 5
        )

)