Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
PHP: array_sum - Manual
[go: Go Back, main page]

PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

array_udiff_assoc" width="11" height="7"/> <array_splice
Last updated: Mon, 05 Feb 2007

view this page in

array_sum

(PHP 4 >= 4.0.4, PHP 5)

array_sum — 配列の中の値の合計を計算する

説明

number array_sum ( array array )

array_sum() は、配列の中の値の合計を整数または float として返します。

例 258. array_sum() の例

<?php
$a
= array(2, 4, 6, 8);
echo
"sum(a) = " . array_sum($a) . "\n";

$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4);
echo
"sum(b) = " . array_sum($b) . "\n";
?>

上の例の出力は以下となります。


sum(a) = 20
sum(b) = 6.9

    

注意: 4.2.1 より前のバージョンの PHP は、渡された配列自体を修正し、 文字列を数値 (これは値にもよるが多くの場合ゼロとなります) に変換していました。



add a note add a note User Contributed Notes
array_sum
herenvardo at gmail dot com
25-Nov-2006 08:28
I'm not sure if something similar already exists, but I needed it so I made it:
<?php
 
/* Performs a pitagoric sum of the elements in $arr
   The pitagoric sum of a set of values is the square root of
   the sum of the sqare power of each value. So, for a, b, c
   it's sqrt(a^2 + b^2 + c^2) */
  /* If any element of $arr is an array itself, the array_sum
   will be used. Alternatively, the values could be used by
   recursion. Returns the integer part (floor) */
 
function array_pitag_sum($arr) {
   if(
is_array($arr) {
    
$ret = 0;
     foreach(
$arr as $i) {
       if(
is_array($i)) {
        
$s = array_sum($i);
        
$ret += $s*$s;
       } else {
        
$ret += $i*$i;
       }
     }
     return
floor(sqrt($ret));
   } else {
     return
$arr;
   }
  }
?>
Tobias Schlemmer
28-Jul-2006 03:41
<?php
$array1
= array('1'=>'1','2'=>'2','3'=>'3');
$array2 = array(          '2'=>'1','3'=>'2','4'=>'3');
$array3 = array(                  '3'=>'1','4'=>'2','5'=>'3');
$array  = array_sum_values( $array1, $array2, $array3 );
print_r($array);

/**
 * Sums the values of the arrays be there keys (PHP 4, PHP 5)
 * array array_sum_values ( array array1 [, array array2 [, array ...]] )
 */
function array_sum_values() {
  
$return = array();
  
$intArgs = func_num_args();
  
$arrArgs = func_get_args();
   if(
$intArgs < 1) trigger_error('Warning: Wrong parameter count for array_sum_values()', E_USER_WARNING);
  
   foreach(
$arrArgs as $arrItem) {
       if(!
is_array($arrItem)) trigger_error('Warning: Wrong parameter values for array_sum_values()', E_USER_WARNING);
       foreach(
$arrItem as $k => $v) {
          
$return[$k] += $v;
       }
   }
   return
$return;
}
/* result:
Array
(
   [1] => 1
   [2] => 3
   [3] => 6
   [4] => 5
   [5] => 3
)
*/
?>
jodymickey at yahoo dot com
02-Jun-2006 12:23
In reference to KageKonjou's array_mode function...

If you only want to know the value in the array that occurs most (and not the number of times it actually occured), you can use this short function.  It also suffers from the same problem in that if there is more than one mode, it will return only one.
<?php
  
function array_mode($array)
   {
       if(!
is_array($array)) return false;
      
asort(array_count_values($array));
       return
array_pop($array);
   }
?>
Moslehi[atsign]Gmail[dot]com
18-Mar-2006 08:13
A simple example for numeric values :

<?PHP

function array_average($arr){
$sum = array_sum($arr);
$num = sizeof($arr);
echo
$sum/$num;
}

$myarray = array(1,2,3,4);
array_average($myarray); // displays 2.5 as average of 1,2,3,4

?>

[Arash Moslehi]
darianlassan at yahoo dot de
04-Nov-2005 08:57
function array_avg(&$array)
{
  //**
   returns the average value of all array-values
   or false if no values in array (or not an array)
  **//

  if (!is_array($array) || count($array)==0)
   return false;
  else
   return array_sum($array)/count($array);
} // array_avg()

Please add this function to PHP.
mroach at mroach dot com
28-Sep-2005 05:06
I ran into a situation where I only wanted to sum elements of an array for certain keys. For that, I wrote this function

<?

function array_sum_by_key()
{
  
$args = func_get_args();
  
  
$arr = array_shift($args);
          
  
$to_sum = is_array($args[0]) ? $args[0] : $args;
  
  
$sum = 0;

   foreach (
$arr as $k=>$v ) {
       if (
in_array($k, $to_sum) ) {
          
$sum += $v;
       }
   }
  
   return
$sum;
}

$arr = array (
  
'dog' => 1,
  
'cat' => 2,
  
'rat' => 4,
  
'mat' => 8,
  
'bat' => 16
);

echo
array_sum_by_key($arr, 'dog', 'mat');

// Result: 9

?>

Alternatively, you can pass the keys to sum as an array

<?

$to_sum
= array('dog', 'bat');

echo
array_sum_by_key($arr, $to_sum);

// Result: 17

?>
KageKonjou at GMail dot com
13-Aug-2005 01:22
Not sure where else to put this, but I added something that determines the most commonly occuring item in an array.  Known Bugs: It will always return the first value if no mode are found, and the first mode found if more are found of same or lesser count.

<?php
function array_mode($array) {
 
$count = array();
 foreach (
$array as $item) {
 
$count[$item]++;
 }
 
$mostcommon = "";
 
$iter = 0;
 foreach (
$count as $k => $v) {
  if (
$v > $iter) {
  
$mostcommon = $k;
  
$iter = $v;
  }
 }
 return array(
"mode" => $mostcommon, "count" => $count[$mostcommon]);
}
?>
punchto at hotmail dot com
16-Mar-2005 12:06
Microsoft Excel - SUMIF()

function sumif($array,$criteria,$sum_array){
  if(is_array($array) && is_array($sum_array) && trim($criteria)!= ""){
   $array_count = (count($array) < count($sum_array)) ? count($array):count($sum_array);
   for($i=0;$i<$array_count;$i++){
     if(ereg("^<",$criteria)){
       $value = ereg_replace("^<","",$criteria);
       $result += $array[$i] < $value ? $sum_array[$i]:0;
     }
     elseif(ereg("^>",$criteria)){
       $value = ereg_replace("^>","",$criteria);
       $result += $array[$i] > $value ? $sum_array[$i]:0;
     }
     else{
       $value = $criteria;
       $result += $array[$i] == $value ? $sum_array[$i]:0;
     }
    
   }
   return $result ? $result:0;
  }
}
adam at laural dot com dot au
02-Mar-2005 09:37
Here's a function to return the sum of a portion of an array:

function array_partial_sum($array, $start, $length){
   $new_array = array_slice($array, $start, $length);
   return array_sum($new_array);
}

$array = array(1, 2, 3, 4, 5);
print array_partial_sum($array, 0, 3);  // prints 6
ncheung at maine dot rr dot com
08-Feb-2005 11:02
For clarity, array indices containing boolean values such as TRUE and FALSE are added up as though they are 1 and 0 respectively.
info at sgonda dot de
08-Dec-2003 08:54
Don't use number_format() before array_sum()...it won't work correctly, if you have a summary...
mucello NOO SPAM @ weatherimages dOt org
23-Oct-2003 07:44
If you want to find the AVERAGE of the values in your array, use the sum and count functions together.  For example, let's say your array is $foo and you want the average...

<?php
$average_of_foo
= array_sum($foo) / count($foo);
?>
mcrm at NOTNEEDIT dot freemal dot it
14-Aug-2003 01:40
Hi people, if someone is searching a function that works also with multimension array, i suggest this :

<?php
function cw_array_count($a) {
  if(!
is_array($a)) return $a;
  foreach(
$a as $key=>$value)
    
$totale += cw_array_count($value);
  return
$totale;
}

$a[0][E][PS][P][a1]=1;
$a[0][E][PS][P][a2]=2;
$a[0][E][PJ][P][a2]=2;
$a[1][E][PS][E][a3]=3;

echo
cw_array_count($a[0]);
// or
echo cw_array_count($a[0][E]);
?>

Bye, Bye.
R.Martina
drverieevil at REMOVEMEasenne dot org
30-Jul-2003 07:14
If some array elements arent integers, function will change them to integers (content of array will not change) type and then sum them.

Example:
<?php
$foo
[] = "12";
$foo[] = 10;
$foo[] = "bar";
$foo[] = "summer";
echo
array_sum ($foo); //same as echo "22";
?>

array_udiff_assoc" width="11" height="7"/> <array_splice
Last updated: Mon, 05 Feb 2007
 
 
show source | credits | sitemap | contact | advertising | mirror sites