如何合并与PHP相同的密钥和不同的价值数组? [英] How to merge arrays with same key and different value in PHP?
本文介绍了如何合并与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屋!
查看全文