В этом разделе мы познакомимся с функцией, вычисляющей сумму всех элементов массива. Сама задача вычисления суммы значений массива предельно проста. Но зачем писать лишний раз один и тот же код, если можно воспользоваться специально созданной и всегда доступной функцией. Функция эта называется, как можно догадаться, array_sum(). И в качестве параметра ей передается только имя массива, сумму значений элементов которого нужно вычислить.
В качестве примера использования этой функции приведем решение более сложной задачи, чем просто вычисление суммы элементов. Этот пример также иллюстрирует применение функции array_slice(), которую мы обсуждали чуть раньше.
Пример 7.16. Пусть дан массив натуральных чисел. Нужно найти в нем такое число, что сумма элементов справа от него равна сумме элементов слева от него.
<?php //массив задается функцией 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 "<br>"; // print_r($out_prev); // echo "$next_sum, $prev_sum<br>"; echo "<hr>"; } ?>
Пример 7.16. Программа поиска числа, такого что сумма элементов справа от него равна сумме элементов слева от него (html, txt)