Перейти к содержимому

Как посчитать сумму элементов массива php

  • автор:

array_sum

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

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

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

Возвращает сумму значений в виде целого числа или числа с плавающей точкой; 0 , если array пуст.

Примеры

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

$a = array( 2 , 4 , 6 , 8 );
echo «sum(a) color: #007700″>. array_sum ( $a ) . «\n» ;

$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;

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 «


    » ;
    >
    ?>

    Пример 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:50

    6 ответов 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:48
Добавить комментарий |
3

Я не очень понял суть Вашего вопроса, но если Вы хотите написать функцию, которая считает сумму элементов массива, который передаётся в эту функцию, то надо сделать так:

function get_sum($arr)

Пример вызова функции:

$values = array(1,2,5,100,-30); echo get_sum($values); //выведет 78 

Как посчитать сумму элементов массива php

Массив представляет набор однотипных данных. Объявление массива похоже на объявление переменной за тем исключением, что после указания типа ставятся квадратные скобки:

тип_переменной[] название_массива;

Например, определим массив целых чисел:

int[] numbers;

После определения переменной массива мы можем присвоить ей определенное значение:

int[] nums = new int[4];

Здесь вначале мы объявили массив nums, который будет хранить данные типа int . Далее используя операцию new , мы выделили память для 4 элементов массива: new int[4] . Число 4 еще называется длиной массива . При таком определении все элементы получают значение по умолчанию, которое предусмотренно для их типа. Для типа int значение по умолчанию - 0.

Также мы сразу можем указать значения для этих элементов:

int[] nums2 = new int[4] < 1, 2, 3, 5 >; int[] nums3 = new int[] < 1, 2, 3, 5 >; int[] nums4 = new[] < 1, 2, 3, 5 >; int[] nums5 = < 1, 2, 3, 5 >;

Все перечисленные выше способы будут равноценны.

Подобным образом можно определять массивы и других типов, например, массив значений типа string :

string[] people = < "Tom", "Sam", "Bob" >;

Начиная с версии C# 12 для определения массивов можно использовать выражения коллекций , которые предполагают заключение элементов массива в квадратные скобки:

int[] nums1 = [ 1, 2, 3, 5 ]; int[] nums2 = []; // пустой массив

Индексы и получение элементов массива

Для обращения к элементам массива используются индексы . Индекс представляет номер элемента в массиве, при этом нумерация начинается с нуля, поэтому индекс первого элемента будет равен 0, индекс четвертого элемента - 3.

Используя индексы, мы можем получить элементы массива:

int[] numbers = < 1, 2, 3, 5 >; // получение элемента массива Console.WriteLine(numbers[3]); // 5 // получение элемента массива в переменную var n = numbers[1]; // 2 Console.WriteLine(n); // 2

Также мы можем изменить элемент массива по индексу:

int[] numbers = < 1, 2, 3, 5 >; // изменим второй элемент массива numbers[1] = 505; Console.WriteLine(numbers[1]); // 505

И так как у нас массив определен только для 4 элементов, то мы не можем обратиться, например, к шестому элементу. Если мы так попытаемся сделать, то мы получим ошибку во время выполнения:

int[] numbers = < 1, 2, 3, 5 >; Console.WriteLine(numbers[6]); // ! Ошибка - в массиве только 4 элемента

Свойство Length и длина массива

каждый массив имеет свойство Length , которое хранит длину массива. Например, получим длину выше созданного массива numbers:

int[] numbers = < 1, 2, 3, 5 >; Console.WriteLine(numbers.Length); // 4

Для получения длины массива после названия массива через точку указывается свойство Length : numbers.Length .

Получение элементов с конца массива

Благодаря наличию свойства Length , мы можем вычислить индекс последнего элемента массива - это длина массива - 1. Например, если длина массива - 4 (то есть массив имеет 4 элемента), то индекс последнего элемента будет равен 3. И, используя свойство Length , мы можем легко получить элементы с конца массива:

int[] numbers = < 1, 2, 3, 5>; Console.WriteLine(numbers[numbers.Length - 1]); // 5 - первый с конца или последний элемент Console.WriteLine(numbers[numbers.Length - 2]); // 3 - второй с конца или предпоследний элемент Console.WriteLine(numbers[numbers.Length - 3]); // 2 - третий элемент с конца

Однако при подобном подходе выражения типа numbers.Length - 1 , смысл которых состоит в том, чтобы получить какой-то определенный элемент с конца массива, утяжеляют код. И, начиная, с версии C# 8.0 в язык был добавлен специальный оператор ^ , с помощью которого можно задать индекс относительно конца коллекции.

Перепишем предыдущий пример, применяя оператор ^ :

int[] numbers = < 1, 2, 3, 5>; Console.WriteLine(numbers[^1]); // 5 - первый с конца или последний элемент Console.WriteLine(numbers[^2]); // 3 - второй с конца или предпоследний элемент Console.WriteLine(numbers[^3]); // 2 - третий элемент с конца

Перебор массивов

Для перебора массивов мы можем использовать различные типы циклов. Например, цикл foreach :

int[] numbers = < 1, 2, 3, 4, 5 >; foreach (int i in numbers)

Здесь в качестве контейнера выступает массив данных типа int . Поэтому мы объявляем переменную с типом int

Подобные действия мы можем сделать и с помощью цикл for:

int[] numbers = < 1, 2, 3, 4, 5 >; for (int i = 0; i

В то же время цикл for более гибкий по сравнению с foreach . Если foreach последовательно извлекает элементы контейнера и только для чтения, то в цикле for мы можем перескакивать на несколько элементов вперед в зависимости от приращения счетчика, а также можем изменять элементы:

int[] numbers = < 1, 2, 3, 4, 5 >; for (int i = 0; i

Также можно использовать и другие виды циклов, например, while :

int[] numbers = < 1, 2, 3, 4, 5 >; int i = 0; while(i

Многомерные массивы

Массивы характеризуются таким понятием как ранг или количество измерений. Выше мы рассматривали массивы, которые имеют одно измерение (то есть их ранг равен 1) - такие массивы можно представлять в виде ряда (строки или столбца) элемента. Но массивы также бывают многомерными. У таких массивов количество измерений (то есть ранг) больше 1.

Массивы которые имеют два измерения (ранг равен 2) называют двухмерными. Например, создадим одномерный и двухмерный массивы, которые имеют одинаковые элементы:

int[] nums1 = new int[] < 0, 1, 2, 3, 4, 5 >; int[,] nums2 = < < 0, 1, 2 >, < 3, 4, 5 >>;

Визуально оба массива можно представить следующим образом:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *