array_sum
array_sum() возвращает сумму значений массива.
Список параметров
Возвращаемые значения
Возвращает сумму значений в виде целого числа или числа с плавающей точкой; 0 , если array пуст.
Примеры
Пример #1 Пример использования array_sum()
$a = array( 2 , 4 , 6 , 8 );
echo «sum(a) color: #007700″>. array_sum ( $a ) . «\n» ;
?php
$b = array( «a» => 1.2 , «b» => 2.3 , «c» => 3.4 );
echo «sum(b) color: #007700″>. array_sum ( $b ) . «\n» ;
?>
Результат выполнения данного примера:
sum(a) = 20 sum(b) = 6.9
User Contributed Notes 6 notes
1 year ago
If you want to calculate the sum in multi-dimensional arrays:
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:
echo array_multisum ( $data );
10 months ago
Notably the function converts strings to float and ignores strings if they are not convertable:
$a = array( «String» , 2 , 4 , 6 , 8 );
echo «sum(a) keyword»>. array_sum ( $a ) . «\n» ;
$b = array( «12.3456» , 2 , 4 , 6 , 8 );
echo «sum(b) keyword»>. array_sum ( $b ) . «\n» ;
?>
sum(a) = 20
sum(b) = 32.3456
5 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)
10 months 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.
1 year ago
//you can also sum multidimentional arrays like this;
?php>
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
1 year ago
array_sum converts strings to integer and array_sum(2,’2′) returns 4.
- Функции для работы с массивами
- array_change_key_case
- array_chunk
- array_column
- array_combine
- array_count_values
- array_diff_assoc
- array_diff_key
- array_diff_uassoc
- array_diff_ukey
- array_diff
- array_fill_keys
- array_fill
- array_filter
- array_flip
- array_intersect_assoc
- array_intersect_key
- array_intersect_uassoc
- array_intersect_ukey
- array_intersect
- array_is_list
- array_key_exists
- array_key_first
- array_key_last
- array_keys
- array_map
- array_merge_recursive
- array_merge
- array_multisort
- array_pad
- array_pop
- array_product
- array_push
- array_rand
- array_reduce
- array_replace_recursive
- array_replace
- array_reverse
- array_search
- array_shift
- array_slice
- array_splice
- array_sum
- array_udiff_assoc
- array_udiff_uassoc
- array_udiff
- array_uintersect_assoc
- array_uintersect_uassoc
- array_uintersect
- array_unique
- array_unshift
- array_values
- array_walk_recursive
- array_walk
- array
- arsort
- asort
- compact
- count
- current
- end
- extract
- in_array
- key_exists
- key
- krsort
- ksort
- list
- natcasesort
- natsort
- next
- pos
- prev
- range
- reset
- rsort
- shuffle
- sizeof
- sort
- uasort
- uksort
- usort
- each
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
Сумма элементов массива
В этом разделе мы познакомимся с функцией, вычисляющей сумму всех элементов массива. Сама задача вычисления суммы значений массива предельно проста. Но зачем писать лишний раз один и тот же код, если можно воспользоваться специально созданной и всегда доступной функцией. Функция эта называется, как можно догадаться, array_sum(). И в качестве параметра ей передается только имя массива, сумму значений элементов которого нужно вычислить.
В качестве примера использования этой функции приведем решение более сложной задачи, чем просто вычисление суммы элементов.
Этот пример также иллюстрирует применение функции array_slice(), которую мы обсуждали чуть раньше.
Пример 7.16. Пусть дан массив натуральных чисел. Нужно найти в нем такое число, что сумма элементов справа от него равна сумме элементов слева от него.
//массив задается функцией array
$arr = array( 2 , 1 , 3 , 4 , 5 , 6 , 4 );
// перебираем каждый элемент массива $arr.
// Внутри цикла текущий ключ массива
// содержится в переменной $k,
// текущее значение – в переменной $val
foreach ( $arr as $k => $val ) $p = $k + 1 ;
// синтаксис array array_slice (
// array array,int offset [,int length])
// array_slice выделяет подмассив
// длины length в массиве array,
// начиная с элемента offset.
$out_next = array_slice ( $arr , $p );
// получаем массив элементов,
// идущих после текущего
$out_prev = array_slice ( $arr , 0 , $k );
// получаем массив элементов,
// идущих перед текущим
// функция mixed array_sum (array array)
// подсчитывает сумму элементов массива array
$next_sum = array_sum ( $out_next );
$prev_sum = array_sum ( $out_prev );
// если сумма элементов до текущего равна
// сумме элементов после, то выводим
// значение текущего элемента
if ( $next_sum == $prev_sum )
echo «value:$val» ;
// можно посмотреть, что представляют собой
// рассмотренные массивы на каждом шаге
// print_r($out_next); echo «
«;
// print_r($out_prev);
// echo «$next_sum, $prev_sum
«;
echo «
» ;
>
?>?phpПример 7.16. Программа поиска числа, такого что сумма элементов справа от него равна сумме элементов слева от него
Посчитать сумму элементов массива
Хочу написать на PHP функцию, которая может посчитать сумму элементов массива. Длина массива задается аргументом этой функции. Пробовал написать, явно не то, help!
function get_sum($arr = 100) < $sum = 0; for ($i = 0; $i $sum = $sum + $arr[$i]; echo $sum; >Отслеживать
30.7k 4 4 золотых знака 48 48 серебряных знаков 86 86 бронзовых знаков
задан 17 окт 2015 в 1:54
kflvgk1634 kflvgk1634
13 1 1 золотой знак 1 1 серебряный знак 4 4 бронзовых знака
arr.lenght ? не оно
17 окт 2015 в 2:39
так есть же array_sum() . Что еще надо?
17 окт 2015 в 3:17
Вы можете объяснить, что вы пытались сделать в вашей попытке?
17 окт 2015 в 4:45
Почему нужно передавать длину массива, а не сам массив? Есть массив – есть длина.
17 окт 2015 в 8:32
Готовая функция php.net/manual/ru/function.array-sum.php Если хотите свою реализацию, выше примеры
21 окт 2015 в 10:506 ответов 6
Сортировка: Сброс на вариант по умолчанию
Длина массива задается аргументом этой функции.
Эта фраза мне кажется неоднозначной. Имеется в виду, что единственный аргумент ф-ии – сам массив, и по нему определяем его длину? Или же ф-ии передаётся два параметра: сам массив и кол-во элементов, которое надо просуммировать, причём, это кол-во может быть меньше, равно, или даже больше, чем длина массива, и все эти случаи нужно обработать?
Ориентируюсь на самое простое объяснение, передаётся только сам массив.
function get_sum($arr) < // убрал значение по умолчанию (=100) // – здесь ожидается массив, а не число $sum = 0; // ок, инициализируем сумму for ($i = 0; $i < count($arr); $i++) < // длина массива: count($arr) // перебираем элементы от 0 и до длина_минус_1: // напр. массив [0,1,2] а длина его 3. Поэтому верхнее значение // $i < 3 $sum = $sum + $arr[$i]; // к общей сумме надо прибавить очередное значение из массива – внутри цикла, а не снаружи >return $sum; // есть смысл, чтобы ф-я возвращала результат, // а что с ним делать дальше - выводить на экран или ещё что // пусть решают там, снаружи ф-ии. > // теперь надо как-то использовать эту функцию: echo "Сумма массива [1,2,3] http://php.net/manual/ru/function.array-sum.php" rel="nofollow">array_sum():echo "Сумма [1,2,3] mt24">)" data-controller="se-share-sheet" data-se-share-sheet-title="Поделиться ссылкой на ответ" data-se-share-sheet-subtitle="" data-se-share-sheet-post-type="answer" data-se-share-sheet-social="facebook twitter " data-se-share-sheet-location="2" data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f3.0%2f" data-se-share-sheet-license-name="CC BY-SA 3.0" data-s-popover-placement="bottom-start">Поделиться)" title="">Улучшить ответ)">изменён 17 окт 2015 в 8:53ответ дан 17 окт 2015 в 8:48SergiksSergiks30.7k 4 золотых знака 48 серебряных знаков 86 бронзовых знаков