【问题标题】:Sum Integer with String and Merge With Same String - PHP用字符串求和整数并用相同的字符串合并 - PHP
【发布时间】:2020-02-03 17:02:43
【问题描述】:

我对这个数组有问题,我需要用相同的键合并表单字符串

$data = array(
        0 => array(
          'name' => 'Alfa Edison, Dwiki',
          'budget' => 3700,
        ),
        1 => array(
          'name' => 'Maverick Sam',
          'budget' => 500,
        ),
        2 => array(
          'name' => 'Dwiki',
          'budget' => 1000,
        ),
        3 => array(
          'name' => 'Steve, Dwiki',
          'budget' => 2000,
        ),
        4 => array(
          'name' => 'Alfa Edison',
          'budget' => 700,
        ),
        5 => array(
          'name' => 'Maverick Sam',
          'budget' => 4000,
        ),
        6 => array(
          'name' => 'Steve, Alfa Edison',
          'budget' => 334,
        ),
      );

我想要这样的结果:

array(
        0 => array(
          'name' => 'Alfa Edison',
          'budget' => 4734,
        ),
        1 => array(
          'name' => 'Dwiki',
          'budget' => 6700,
        ),
        2 => array(
          'name' => 'Maverick Sam',
          'budget' => 4500,
        ),
        3 => array(
          'name' => 'Steve',
          'budget' => 2334,
        ),
      );

如何合并具有相同键的字符串并对预算求和。我尝试为每一个,但我失败了。 我尝试 array_reduce 并爆炸名称但失败了。

【问题讨论】:

  • 请展示您到目前为止所做的尝试——即使没有成功,也可以很容易地展示您失败的地方。

标签: php arrays merge


【解决方案1】:

问题在于每个“键”(名称)实际上不止一个键。因此,当您迭代输入数组时,您需要将它们拆分,然后添加一个内部循环以将名称用作结果中的键。

foreach ($data as $item) {

    // separate the names
    $names = explode(', ', $item['name']);

    // iterate the names and set/increase values for them in the result array
    foreach ($names as $name) {
        $result[$name]['name'] = $name;
        $result[$name]['budget'] = $item['budget'] + ($result[$name]['budget'] ?? 0);
    }
}

// remove the string keys if necessary
$result = array_values($result);

【讨论】:

    猜你喜欢
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 2019-02-21
    • 2020-09-16
    • 1970-01-01
    • 2011-03-12
    相关资源
    最近更新 更多