array_sum

(PHP 4 >= 4.0.4, PHP 5)

array_sumВычисляет сумму значений массива

Описание

number array_sum ( array $array )

array_sum() возвращает сумму значений массива.

Список параметров

array

Входной массив.

Возвращаемые значения

Возвращает сумму значений в виде integer или float.

Список изменений

Версия Описание
4.2.1 PHP более ранних, чем 4.2.1, версий модифицировал переданный в качестве аргумента массив и конвертировал строки в числа (что в большинстве случаев означало конвертирование в 0, в зависимости от их значения).

Примеры

Пример #1 Пример использования array_sum()

<?php
$a 
= array(2468);
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

Коментарии

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";
?>
2003-07-30 06:14:29
http://php5.kiev.ua/manual/ru/function.array-sum.html
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);
?>
2003-10-22 18:44:51
http://php5.kiev.ua/manual/ru/function.array-sum.html
For clarity, array indices containing boolean values such as TRUE and FALSE are added up as though they are 1 and 0 respectively.
2005-02-07 20:02:53
http://php5.kiev.ua/manual/ru/function.array-sum.html
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;
  }
}
2005-03-15 21:06:53
http://php5.kiev.ua/manual/ru/function.array-sum.html
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;
    }
  }
?>
2006-11-24 17:28:24
http://php5.kiev.ua/manual/ru/function.array-sum.html
Here is how you can multiply two arrays in the form of matrixes using a bit of matrix algebra (M*M).
By calling the function multiplyMatrix, you will be multiplying two sparse matrixes (zeros need not be included in the array for the operation to be performed).

<?php
$M 
= array(
0=>array(1=>1,4=>1),
1=>array(2=>1,3=>1),
3=>array(1=>1),
4=>array(5=>1),
5=>array(6=>1)
);

$M1 multiplyMatrix($M$M); //multiplying $M by itself

echo '<pre>';print_r($M1);echo '</pre>';

function 
multiplyMatrix($M1$M2)
    {
#Helena F Deus, Oct 06, 2008
##Multiply two matrixes; $M1 and $M2 can be sparse matrixes, the indexes on both should match
       
if(is_file($M1)) {$matrix1 unserialize(file_get_contents($M1));}
        else 
$matrix1 $M1;
       
           
       
#transpose M2
       
$M2t transpose($M2);
       
        foreach (
$M2t as $row=>$tmp) {
           
##sum the result of the value in the col multiplied by the value in the vector on the corresponding row
               
               
foreach ($M1 as $row1=>$tmp1) {
                   
                   
$multiply[$row1] = array_rproduct($tmp,$tmp1);
                   
                    if(!
$multiply[$row1]){
                          exit;
                        }
                }
               
                foreach (
$multiply as $row1=>$vals) {
                   
                   
$sum[$row][$row1]=array_sum($vals);
                }
               
        }
   
   
$r=transpose($sum);
   
    return (
$r);
    }

function 
transpose($M)
{
foreach (
$M as $row=>$cols) {
           
            foreach (
$cols as $col=>$value) {
                 if(
$value)
                 
$Mt[$col][$row]=$value;
            }
        }
       
ksort($Mt);
       
return (
$Mt);           
}

function 
array_rproduct($a1$a2)
{
   
   
    foreach (
$a1 as $line=>$cols) {
       
$a3[$line] = $a1[$line]*$a2[$line];
        foreach (
$a2 as $line2=>$cols2) {
           
$a3[$line2] = $a1[$line2]*$a2[$line2];
        }
    }   
   
ksort($a3);
   
   
    return (
$a3);
   
   
}

?>
2008-10-06 10:01:29
http://php5.kiev.ua/manual/ru/function.array-sum.html
If you want to check if there are for example only strings in an array, you can use a combination of array_sum and array_map like this:

<?php

function only_strings_in_array($arr) {
    return 
array_sum(array_map('is_string'$arr)) == count($arr);
}

$arr1 = array('one''two''three');
$arr2 = array('foo''bar', array());
$arr3 = array('foo', array(), 'bar');
$arr4 = array(array(), 'foo''bar');

var_dump(
   
only_strings_in_array($arr1),
   
only_strings_in_array($arr2),
   
only_strings_in_array($arr3),
   
only_strings_in_array($arr4)
);
?>

This will give you the following result:
bool(true)
bool(false)
bool(false)
bool(false)
2014-09-21 00:21:17
http://php5.kiev.ua/manual/ru/function.array-sum.html
array_sum can be used to caculate the cross sum in a very short way:

array_sum(str_split('17243'))

php frameworks like rexo do it like this; it's faster then do it by iteration.
2017-04-26 00:39:23
http://php5.kiev.ua/manual/ru/function.array-sum.html

    Поддержать сайт на родительском проекте КГБ