合并两个数组,但将重复键的值加在一起
Combine two arrays but add Values of duplicate keys together
我有两个数组 $ids 和 $quants(库存商品的 ID 和数量)需要合并,但不是替换或删除重复项,而是将它们的值加在一起。
目前我正在使用 array_combine() 但这意味着在存在多个相同 ID 的情况下,一些数量会丢失。
例如
$ids = Array(1, 1, 2, 3);
$quants = Array(10, 20, 30, 40);
期望的输出:
$combined = Array(
[1] => 30
[2] => 30
[3] => 40
)
提前感谢您的任何建议
$ids = Array(1, 1, 2, 3);
$quants = Array(10, 20, 30, 40);
$a = array_unique($ids);
$a = array_combine($a, array_fill(0, count($a), 0));
foreach($ids as $k=>$v) {
$a[$v] += $quants[$k];
}
print_r($a);
没有内置函数,所以你必须自己做:
function my_array_combine($keys, $values)
{
if (count($keys) != count($values)) {
throw new InvalidArgumentException('More or less');
}
$result = array();
$values = array_values($values); // make sure it is indexed 0, 1, 2
foreach(array_values($keys) as $idx => $key) {
// Correspondending value is at $values[$idx];
if (isset($result[$key])) {
$result[$key] += $values[$idx];
} else {
$result[$key] = $values[$idx];
}
}
return $result;
}
我有两个数组 $ids 和 $quants(库存商品的 ID 和数量)需要合并,但不是替换或删除重复项,而是将它们的值加在一起。
目前我正在使用 array_combine() 但这意味着在存在多个相同 ID 的情况下,一些数量会丢失。
例如
$ids = Array(1, 1, 2, 3);
$quants = Array(10, 20, 30, 40);
期望的输出:
$combined = Array(
[1] => 30
[2] => 30
[3] => 40
)
提前感谢您的任何建议
$ids = Array(1, 1, 2, 3);
$quants = Array(10, 20, 30, 40);
$a = array_unique($ids);
$a = array_combine($a, array_fill(0, count($a), 0));
foreach($ids as $k=>$v) {
$a[$v] += $quants[$k];
}
print_r($a);
没有内置函数,所以你必须自己做:
function my_array_combine($keys, $values)
{
if (count($keys) != count($values)) {
throw new InvalidArgumentException('More or less');
}
$result = array();
$values = array_values($values); // make sure it is indexed 0, 1, 2
foreach(array_values($keys) as $idx => $key) {
// Correspondending value is at $values[$idx];
if (isset($result[$key])) {
$result[$key] += $values[$idx];
} else {
$result[$key] = $values[$idx];
}
}
return $result;
}