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



> "М.Ю. Лермонтов"=>"Герой нашего времени");

>// создаем функцию, которую хотим

>// применить к элементам массива

>function try_walk(&$val,$key){

> $key = "

Автор: " .$key ."
";

> $val = "Название: \"" . $val ."\"

";

> echo $key.$val;

>}

>// применяем ко всем элементам массива

>// $book1 функцию try_walk

>array_walk($books1,"try_walk");

>print_r($books1);

>?>



В результате работы скрипта получим:


>Автор: А.С. Пушкин

>Название: "Руслан и Людмила"

>Автор: Л.Н. Толстой

>Название: "Война и мир"

>Автор: М.Ю. Лермонтов

>Название: "Герой нашего времени"

>Array ( [А.С. Пушкин] =>

> Название: "Руслан и Людмила"

> [Л.Н. Толстой] =>

> Название: "Война и мир"

> [М.Ю. Лермонтов] =>

> Название: "Герой нашего времени")



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


Функция array_slice


Поскольку массив – это набор элементов, вполне вероятно, потребуется выделить из него какой-нибудь поднабор. В PHP для этих целей есть функция array_slice. Ее синтаксис таков:


>array_slice (массив,

> номер_элемента [, длина])


Эта функция выделяет подмассив длины длина в массиве массив, начиная с элемента, номер которого задан параметром номер_элемента. Положительный номер_элемента указывает на порядковый номер элемента относительно начала массива, отрицательный – на номер элемента с конца массива.


>

>$arr = array(1,2,3,4,5);

>$sub_arr = array_slice($arr,2);

>print_r($sub_arr);

>/*

>выведет Array ( [0] => 3 [1] =>4 [2] => 5 ),

>т.е. подмассив, состоящий из элементов

>3, 4, 5 */

>$sub_arr = array_slice($arr,-2);

>print_r($sub_arr);

> // выведет Array ( [0] => 4 [1] => 5 ),

> // т.е. подмассив, из элементов 4, 5

>?>



Если задать параметр длина при использовании array_slice, то будет выделен подмассив, имеющий ровно столько элементов, сколько задано этим параметром. Длину можно указывать и отрицательную. В этом случае интерпретатор удалит с конца массива число элементов, равное модулю параметра длина.


>

>$arr = array(1,2,3,4,5);

>$sub_arr = array_slice($arr, 2, 2);

> // содержит массив из элементов 3, 4

>$sub = array_slice($arr,-3, 2);

> // тоже содержит массив из элементов 3, 4

>$sub1 = array_slice($arr,0, -1);

> // содержит массив из

> // элементов 1, 2, 3, 4

>$sub2 = array_slice($arr,-4, -2);

> // содержит массив из элементов 2, 3

>?>



Функция array_chunk


Есть еще одна функция, похожая на array_slice() – это array_chunk(). Она разбивает массив на несколько подмассивов заданной длины. Синтаксис ее такой:


>array_chunk ( массив, размер