如何合并与PHP相同的密钥和不同的价值数组? [英] How to merge arrays with same key and different value in PHP?

查看:195
本文介绍了如何合并与PHP相同的密钥和不同的价值数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有同样的阵列这些:

  0 =>阵列([0] =>财务/购物/食品,[1] => 47)
1 =>阵列([0] =>财务/购物/食品,[1] => 25)
2 =>阵列([0] =>财务/购物/电子,[1] => 190)

我需要创建一个数组[0]作为一个键和[1]值。结果
最棘手的部分是,如果[0]一样吧[1]添加到现有的值。

所以结果我想要的是:

 阵列([财务/购物/食品] => 72,[财务/购物/电子] => 190);

感谢


解决方案

  //阵列array_merge_values​​($基地[,$合并[,...]])
//基于密钥将多个数组值
//(加在一起,而不是使用追加本地array_merge的)
//
// $基地 - 阵列,开始了
// $合并[...] - 其他阵列(S),包括(并增加它们的值)给基
功能array_merge_values​​()
{
  的$ args = func_get_args();  $结果=的$​​ args [0];
  为($ _ = 1; $ _<计数($参数); $ _ ++)
    的foreach(的$ args [$ _]作为$关键=> $值)
    {
      如果(array_key_exists($键,$结果))
        $结果[$键] + = $价值;
      其他
        $结果[$关键] = $价值;
    }
  返回$结果;
}$数组1 =阵列('富'=> 5,'巴'=> 10,'foobar的'=> 15);
$数组2 =阵列('富'=→20,'foohbah'=> 25);
$ ARRAY3 =阵列('酒吧'=> 30);
后续代码var_dump(array_merge_values​​($数组1,$数组2,$ ARRAY3));

结果:

 阵列(4){
  [富] =>
  INT(25)
  [条] =>
  INT(40)
  [FOOBAR] =>
  INT(15)
  [foohbah] =>
  INT(25)
}

这是你要找的是什么?

I have arrays similarly to these:

0 => Array ( [0] => Finance / Shopping / Food, [1] => 47 )            
1 => Array ( [0] => Finance / Shopping / Food, [1] => 25 )                 
2 => Array ( [0] => Finance / Shopping / Electronic, [1] => 190 ) 

I need to create one array with [0] as a key and [1] as value.
The tricky part is that if the [0] is same it add [1] to existing value.

So the result I want is:

array ([Finance / Shopping / Food]=> 72, [Finance / Shopping / Electronic] => 190);

thanks

解决方案

// array array_merge_values($base[, $merge[, ...]])
// Combines multiple array values based on key
//   (adding them together instead of the native array_merge using append)
//
// $base       - array to start off with
// $merge[...] - additional array(s) to include (and add their values) on to the base
function array_merge_values()
{
  $args = func_get_args();

  $result = $args[0];
  for ($_ = 1; $_ < count($args); $_++)
    foreach ($args[$_] as $key => $value)
    {
      if (array_key_exists($key,$result))
        $result[$key] += $value;
      else
        $result[$key] = $value;
    }
  return $result;
}

$array1 = Array('foo' => 5, 'bar' => 10, 'foobar' => 15);
$array2 = Array('foo' => 20,                             'foohbah' => 25);
$array3 = Array(            'bar' => 30);
var_dump(array_merge_values($array1,$array2,$array3));

Result:

array(4) {
  ["foo"]=>
  int(25)
  ["bar"]=>
  int(40)
  ["foobar"]=>
  int(15)
  ["foohbah"]=>
  int(25)
} 

That what you're looking for?

这篇关于如何合并与PHP相同的密钥和不同的价值数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆