Язык программирования PHP | страница 68



> [, сохранять_ключи])


В результате работы array_chunk() возвращает многомерный массив, элементы которого представляют собой полученные подмассивы. Если задать параметр сохранять ключи как true, то при разбиении будут сохранены ключи исходного массива. В противном случае ключи элементов заменяются числовыми индексами, которые начинаются с нуля.


Пример 7.15. У нас есть список приглашенных, оформленный в виде массива их фамилий. У нас имеются столики на три персоны. Поэтому нужно распределить всех приглашенных по трое.


>

>$persons = array("Иванов", "Петров",

> "Сидорова","Зайцева", "Волкова");

>$triples = array_chunk($persons,3);

> // делим массив на подмассивы

> // по три элемента

>foreach ($triples as $k => $table){

> // выводим полученные тройки

> echo "За столиком номер $k сидят:

    ";

    > foreach ($table as $pers)

    > echo "

  • $pers";

    > echo "

";

>}

>?>



В результате получим:


>за столиком номер 0 сидят:

>• Иванов

>• Петров

>• Сидорова

>за столиком номер 1 сидят:

>• Зайцева

>• Волкова



Сумма элементов массива


В этом разделе мы познакомимся с функцией, вычисляющей сумму всех элементов массива. Сама задача вычисления суммы значений массива предельно проста. Но зачем писать лишний раз один и тот же код, если можно воспользоваться специально созданной и всегда доступной функцией. Функция эта называется, как можно догадаться, 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);

> // получаем массив элементов,