W3docs

Функция array_sum в PHP: как вычислить сумму элементов массива

Узнайте, как использовать функцию array_sum() в PHP для суммирования значений массива — с примерами и лучшими практиками.

Функция array_sum() складывает все значения массива и возвращает итоговую сумму. Это один из самых быстрых способов подсчитать сумму числовой коллекции в PHP — цен в корзине, баллов в тесте или любого другого набора чисел — без написания собственного цикла. В этой главе рассматриваются синтаксис, возвращаемый тип, поведение при нечисловых значениях и пустых массивах, а также несколько практических примеров.

Что такое функция array_sum в PHP?

Функция array_sum() в PHP — это встроенная функция, которая вычисляет и возвращает сумму всех значений массива. Это простая, но мощная функция, способная сэкономить немало времени и усилий при работе с массивами. Функция принимает единственный параметр — массив, сумму значений которого требуется вычислить.

Базовый синтаксис функции array_sum():

Синтаксис array_sum в PHP

array_sum(array $array): int|float

Функция принимает массив в качестве единственного параметра и возвращает int|float: если все значения являются целыми числами, результат будет типа int, но как только среди значений встретится число с плавающей точкой, результат станет float. Функция работает как с индексированными, так и с ассоциативными массивами — ключи игнорируются, суммируются только значения.

Как использовать функцию array_sum в PHP

Использовать функцию array_sum() в PHP очень просто. Достаточно передать массив в функцию, и она вернёт сумму всех его значений.

Пример:

Пример использования функции array_sum в PHP

php— editable, runs on the server

В этом примере определяется массив $numbers, содержащий пять целых чисел. Он передаётся в array_sum(), которая возвращает итоговую сумму. Результат выводится с помощью echo.

Примечание: array_sum() автоматически приводит значения к числовому типу. Числовая строка вроде "3" или "4.5" преобразуется в соответствующее число, тогда как нечисловая строка, например "abc", считается равной 0 (в PHP 8+ при этом выдаётся предупреждение). Таким образом, array_sum([1, "2", "abc"]) вернёт 3 (1 + 2 + 0).

Результат выполнения этого кода:

The sum of the numbers is: 15

Практические примеры использования array_sum в PHP

Теперь, когда вы знаете, как использовать функцию array_sum() в PHP, рассмотрим несколько реальных примеров её применения в веб-разработке.

Пример 1: вычисление общей стоимости товаров в корзине

Предположим, вы создаёте интернет-магазин и хотите вычислить общую стоимость всех товаров в корзине. Для этого удобно воспользоваться функцией array_sum().

Пример:

PHP Пример 1: вычисление общей стоимости с помощью array_sum

php— editable, runs on the server

Здесь определяется массив $cart с информацией о товарах. С помощью array_column() цены извлекаются в плоский массив, затем суммируются через array_sum(), и результат выводится на экран.

Результат выполнения этого кода:

The total price of the items in the cart is: $60

Пример 2: вычисление среднего балла

В этом примере определяется массив $scores с пятью оценками студентов. Среднее значение вычисляется путём деления суммы баллов на количество элементов с помощью count(), после чего результат выводится на экран.

Вычисление среднего значения с помощью array_sum в PHP

php— editable, runs on the server

Результат выполнения этого кода:

The average score of the students is: 84

array_sum() в сравнении с array_product() и array_reduce()

array_sum() создана для одной задачи — сложения значений. Для других видов агрегации существуют родственные функции:

  • Чтобы перемножить все значения вместо сложения, используйте array_product().
  • Для произвольной агрегации (конкатенация, условная сумма, суммирование свойства) используйте array_reduce(), которая позволяет задать собственный callback.

Применяйте array_sum(), когда нужна простая сумма — она короче и быстрее эквивалентного вызова array_reduce().

Лучшие практики использования array_sum в PHP

Несмотря на простоту функции array_sum(), существует ряд рекомендаций, которые помогут использовать её правильно и эффективно.

1. Убедитесь, что входные данные являются массивом

Перед вызовом array_sum() важно убедиться, что переданное значение действительно является массивом. В PHP 8+ передача не-массива вызывает TypeError вместо предупреждения.

Для проверки типа переменной используйте функцию is_array(). Пример:

Проверка входных данных перед array_sum в PHP

if (is_array($numbers)) {
    $sum = array_sum($numbers);
} else {
    // handle the error
}

Перед вызовом array_sum() переменная проверяется с помощью is_array(). Если значение не является массивом, ошибка обрабатывается соответствующим образом.

2. Обработка пустых массивов

При передаче пустого массива в функцию array_sum() она возвращает 0. Хотя в некоторых случаях это корректное значение, важно обрабатывать пустые массивы так, чтобы это соответствовало логике приложения.

Например, если вы вычисляете средний балл студентов в классе, а студентов нет, разумно вывести сообщение об отсутствии данных для усреднения.

Обработка пустых массивов при использовании array_sum в PHP

if (empty($scores)) {
    echo "There are no scores to average.";
} else {
    $average_score = array_sum($scores) / count($scores);
    echo "The average score of the students is: " . $average_score;
}

Проверяем, пуст ли $scores, с помощью empty(). Если пуст — выводим сообщение; в противном случае вычисляем и отображаем среднее значение.

Заключение

Функция array_sum() в PHP — простой, но мощный инструмент, который экономит время и усилия при работе с массивами. Она позволяет легко вычислить сумму всех значений массива, что бывает полезно в самых разных приложениях.

В этой статье представлено подробное руководство по использованию функции array_sum() в PHP, включая реальные примеры и лучшие практики. Следуя этим рекомендациям, вы сможете использовать функцию правильно и эффективно, создавая более надёжные PHP-приложения.

Практика

Практика
Для чего предназначена функция array_sum() в PHP?
Для чего предназначена функция array_sum() в PHP?
Was this page helpful?