Php阵列组和总和

时间:2014-04-25 21:54:37

标签: php

我有以下数组:

array(4) {
  ["Product1"]=>
  string(1) "2"
  ["Product2"]=>
  string(1) "0"
  ["Product3"]=>
  string(1) "0"
  ["Product4"]=>
  string(1) "0"
}
array(4) {
  ["Product1"]=>
  string(1) "7"
  ["Product2"]=>
  string(1) "2"
  ["Product3"]=>
  string(1) "0"
  ["Product4"]=>
  string(1) "0"
}

我需要对产品进行分组并总结其数量,以便:

array(4) {
  ["Product1"]=>
  string(1) "9"
  ["Product2"]=>
  string(1) "2"
  ["Product3"]=>
  string(1) "0"
  ["Product4"]=>
  string(1) "0"
}

抱歉我的英语不好,非常感谢你的帮助!

3 个答案:

答案 0 :(得分:1)

UPDATE:如果您有许多具有相同键的数组,则必须为每个数组的每个键计算值的总和。

使用此:

$finalArray = array();
foreach($parentArray[0] as $key => $value) {
    $property = $key;
    $sum = 0;
    foreach($parentArray as $array) {
        $value = $array[$property];
        $sum = $sum + $value;
    }
    $finalArray[$property] = $sum;
}

输出相同。

Example here

试试这个:

如何做你想要的?得到总和:

$finalArray = array();
foreach($array1 as $key => $value) {
    $value1 = $array1[$key];
    $value2 = $array2[$key];

    $finalArray[$key] = $value1 + $value2;
}

如何输出结果?输出:

foreach($finalArray as $key => $value) {
    echo $key." sum is ".$value;
}

告诉我某些事情是否不清楚。

注意,+符号会将两种值类型都更改为integer,您将获得整数输出。

如果你想要字符串输出,请使用:

echo "".$integerValue;

P.S。:为什么他们是字符串类型?是否有必要?

答案 1 :(得分:0)

应该使用不同键的多个输入数组的示例代码

// 0. let's say all your arrays are in $arrays, 
$arrays[] = array(...data for array 1...);
$arrays[] = array(...data for array 2...);
$arrays[] = array(...data for array 3...); // and so on...

// 1. get all keys together from the array's

$ak = array(); // keys
$ar = array(); // result

foreach ($arrays as $array) {
  $ak = array_merge($ak, array_keys($array));
}

// 2. sum all the values for all keys into one
foreach ($arrays as $array) {
  foreach ($ak as $key) {
    $ar[$key] += $array[$key];
  }
}

// result is in $ar

答案 2 :(得分:0)

2个阵列的最快方式:

$newarray = array();
foreach($firstarray as $k => $val){
    $newarray[$k] = (int)$newarray[$k] + (int) $val;
}
foreach($secondarray as $k => $val){
    $newarray[$k] = (int)$newarray[$k] + (int) $val;
}

var_dump($newarray);