PHP Velho Oeste 2024

array_sum

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

array_sum배열 값들의 합을 계산

설명

number array_sum ( array $array )

array_sum()은 배열 값들의 합을 반환합니다.

인수

array

입력 배열.

반환값

값들의 합을 정수나 소수로 반환합니다.

변경점

버전 설명
4.2.1 PHP 4.2.1 이전 버전에서는 전달되는 배열 자체를 변경해서 문자열을 숫자로 변경했었다. (그 값에 따라 대부분 0으로 변환된다)

예제

Example #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

add a note add a note

User Contributed Notes 6 notes

up
17
rodrigo at adboosters dot com
2 years ago
If you want to calculate the sum in multi-dimensional arrays:

<?php
function array_multisum(array $arr): float {
   
$sum = array_sum($arr);
    foreach(
$arr as $child) {
       
$sum += is_array($child) ? array_multisum($child) : 0;
    }
    return
$sum;
}
?>

Example:

<?php
$data
=
[
   
'a' => 5,
   
'b' =>
    [
       
'c' => 7,
       
'd' => 3
   
],
   
'e' => 4,
   
'f' =>
    [
       
'g' => 6,
       
'h' =>
        [
           
'i' => 1,
           
'j' => 2
       
]
    ]
];

echo
array_multisum($data);

//output: 28
?>
up
-1
harl at gmail dot com
1 year ago
array_sum() doesn't "ignore strings if they are not convertible", it converts them to zero. array_product() does the same thing, where the difference between "ignoring" and "converting to zero" is much more obvious.
up
-2
Michele Marsching
1 year ago
Notably the function converts strings to float and ignores strings if they are not convertable:

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

$b = array("12.3456", 2, 4, 6, 8);
echo
"sum(b) = " . array_sum($b) . "\n";
?>

sum(a) = 20
sum(b) = 32.3456
up
-9
samiulmomin191139 at gmail dot com
2 years ago
<?php
//you can also sum multidimentional arrays like this;

function arraymultisum(array $arr){
$sum=null;
   
    foreach(
$arr as $child){
       
$sum+=is_array($child) ? arraymultisum($child):$child;
    }
    return
$sum;
}

echo
arraymultisum(array(1,4,5,[1,5,8,[4,5,7]]));

//Answer Will be
//40

?>
up
-4
sarosekvlad12 at gmail dot com
11 months ago
If you have a case where your array has int in strings, it sums them up as if there were only int in the array!
function sum_mix($a)
{
    return array_sum($a);
}
var_dump(sum_mix([9, 3, '7', '3']));
Response will be int(22)
up
-21
yakushabb at gmail dot com
2 years ago
array_sum converts strings to integer and array_sum(2,'2') returns 4.

I had no idea.
To Top