为了账号安全,请及时绑定邮箱和手机立即绑定

从两个键数组中查找重复项并对不同的键求和

从两个键数组中查找重复项并对不同的键求和

PHP
POPMUISE 2022-10-09 19:53:06
我有数组:$array = [  0 => [    0 => 1500    1 => 994    2 => 155    3 => 530  ]  1 => [    0 => 1500    1 => 994    2 => 9314    3 => 11  ]  2 => [    0 => 25    1 => 5    2 => 63    3 => 47  ]  3 => [    0 => 1500    1 => 994    2 => 3    3 => 51  ]];如果$array[key][0]and$array[key][1]具有相同的值,那么我只需要对重复的 and进行求和$array[key][2],然后组合成一个键。$array[key][3]$array[key][0]$array[key][1]这就是我想要实现的目标:$array = [  0 => [    0 => 1500    1 => 994    2 => 9472    3 => 592  ]  1 => [    0 => 25    1 => 5    2 => 63    3 => 47  ]];第一个和第二个值(1500 和 994)必须保持不变。感谢您的回答!
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

$array = [

  0 => [

    0 => 1500,

    1 => 994,

    2 => 155,

    3 => 530,

  ],

  1 => [

    0 => 1500,

    1 => 994,

    2 => 9314,

    3 => 11,

  ],

  2 => [

    0 => 25,

    1 => 5,

    2 => 63,

    3 => 47,

  ],

  3 => [

    0 => 1500,

    1 => 994,

    2 => 3,

    3 => 51,

  ],];



  // create composite array key 


  $newArray = [];

  foreach($array as $item) {

      $compositeKey = $item[0] . '-' . $item[1];

      $newArray[$compositeKey] = [

          $item[0],

          $item[1],

          isset($newArray[$compositeKey][2]) ? $newArray[$compositeKey][2] + $item[2] : $item[2],

          isset($newArray[$compositeKey][3]) ? $newArray[$compositeKey][3] + $item[3] : $item[3],

          ];

  }


  echo '<pre>';

  print_r(array_values($newArray));

  echo '</pre>';

输出:


Array

(

    [0] => Array

        (

            [0] => 1500

            [1] => 994

            [2] => 9472

            [3] => 592

        )


    [1] => Array

        (

            [0] => 25

            [1] => 5

            [2] => 63

            [3] => 47

        )


)

http://sandbox.onlinephpfunctions.com/code/940f06c43338d9785b7c47548a0dcbf6e4b2cd75


查看完整回答
反对 回复 2022-10-09
  • 1 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信