|
 |
array_sum (PHP 4 >= 4.0.4, PHP 5) array_sum --
Вычислить сумму значений массива
Описаниеnumber array_sum ( array array )
array_sum() возвращает сумму значений массива.
Полученный результат будет иметь тип integer или float.
Пример 1. Пример использования 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";
?>
|
Программа выведет:
|
Замечание:
PHP более ранних, чем 4.2.1, версий модифицировал переданный в качестве аргумента
массив и конвертировал строки в числа (что в большинстве случаев означало
конвертирование в 0).
array_sum
jodymickey at yahoo dot com
01-Jun-2006 08: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
17-Mar-2006 03: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); ?>
[Arash Moslehi]
darianlassan at yahoo dot de
04-Nov-2005 03: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
27-Sep-2005 01: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');
?>
Alternatively, you can pass the keys to sum as an array
<?
$to_sum = array('dog', 'bat');
echo array_sum_by_key($arr, $to_sum);
?>
KageKonjou at GMail dot com
12-Aug-2005 09: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
15-Mar-2005 07: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
01-Mar-2005 04: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
07-Feb-2005 06: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
07-Dec-2003 03: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
22-Oct-2003 03: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
13-Aug-2003 09: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]);
echo cw_array_count($a[0][E]);
?>
Bye, Bye.
R.Martina
drverieevil at REMOVEMEasenne dot org
30-Jul-2003 03: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); ?>
| |