Язык программирования PHP - [34]
Если необходимо работать с реальными значениями массива, а не с их копиями, следует передавать аргумент в функцию по ссылке. Однако нужно иметь в виду, что нельзя добавлять или удалять элементы массива и производить действия, изменяющие сам массив, поскольку в этом случае результат работы array_walk() считается неопределенным.
>
>$books1 = array(
> "А.С. Пушкин"=>"Руслан и Людмила",
> "Л.Н. Толстой"=>"Война и мир",
> "М.Ю. Лермонтов"=>"Герой нашего времени");
>// создаем функцию, которую хотим
>// применить к элементам массива
>function try_walk($val,$key,$data){
> echo "$data \"$val\" написал $key
";
>}
>// применяем ко всем элементам массива
>// $book1 функцию try_walk
>array_walk($books1,"try_walk","Роман");
>?>
В результате работы скрипта получим:
>Роман "Руслан и Людмила" написал А.С. Пушкин
>Роман "Война и мир" написал Л.Н. Толстой
>Роман "Герой нашего времени"
> написал М.Ю. Лермонтов
Заметим, что мы не изменили значений у элементов массива. Чтобы их изменить, надо было передавать значения в переменную $val функции try_walk по ссылке.
>
>$books1 = array(
> "А.С. Пушкин"=>"Руслан и Людмила",
> "Л.Н. Толстой"=>"Война и мир",
> "М.Ю. Лермонтов"=>"Герой нашего времени");
>// создаем функцию, которую хотим
>// применить к элементам массива
>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 ( массив, размер
> [, сохранять_ключи])
В результате работы array_chunk() возвращает многомерный массив, элементы которого представляют собой полученные подмассивы. Если задать параметр сохранять ключи как true, то при разбиении будут сохранены ключи исходного массива. В противном случае ключи элементов заменяются числовыми индексами, которые начинаются с нуля.
Пример 7.15. У нас есть список приглашенных, оформленный в виде массива их фамилий. У нас имеются столики на три персоны. Поэтому нужно распределить всех приглашенных по трое.
>
>$persons = array("Иванов", "Петров",
> "Сидорова","Зайцева", "Волкова");
>$triples = array_chunk($persons,3);
> // делим массив на подмассивы
> // по три элемента
>foreach ($triples as $k => $table){
> // выводим полученные тройки
> echo "За столиком номер $k сидят:
";
> foreach ($table as $pers)
> echo "
> echo "";
>}
>?>
В результате получим:
>за столиком номер 0 сидят:
>• Иванов
>• Петров
>• Сидорова
>за столиком номер 1 сидят:
>• Зайцева
>• Волкова
Сумма элементов массива
В этом разделе мы познакомимся с функцией, вычисляющей сумму всех элементов массива. Сама задача вычисления суммы значений массива предельно проста. Но зачем писать лишний раз один и тот же код, если можно воспользоваться специально созданной и всегда доступной функцией. Функция эта называется, как можно догадаться, array_sum(). И в качестве параметра ей передается только имя массива, сумму значений элементов которого нужно вычислить.
«Лирика обладает одним несомненным преимуществом перед другими родами поэзии: она лучше всего освещает нам личный мир поэта, ту сферу, которую выделяет для него в широком Божьем мире его темперамент, обстановка, симпатии, верования; она показывает степень отзывчивости поэта; т.е. его способности переживать разнородные душевные состояния: она часто открывает нам уголки поэтической деятельности, где живут не оформившиеся еще образы, задатки для определенных фигур эпоса и драмы. В эпосе и драме образы становятся разнообразнее и пестрее, но вместе с тем славятся объективнее, особенно в драме…».
В книге кратко изложены ответы на основные вопросы темы «Уголовное право. Особенная часть». Издание поможет систематизировать знания, полученные на лекциях и семинарах, подготовиться к сдаче экзамена или зачета.Пособие адресовано студентам высших и средних образовательных учреждений, а также всем интересующимся данной тематикой.
Обучение созданию профессиональных видеофильмов и обработки их на компьютере представлено в виде 12 уроков. Рассматривается, как с помощью программы Adobe After Effects можно редактировать и рисовать последовательность кадров, добавлять титры и заголовки, применять различные видеоэффекты, редактировать звуковое сопровождение фильма. Описывается процесс настройки прозрачности и наложения слоев видео для последующего экспорта фильма в различных форматах. Показываются способы создания анимации при масштабировании, поворотах и в движении с наложением титров и спецэффектов.
В учебном пособии в краткой и доступной форме рассмотрены все основные вопросы, предусмотренные государственным образовательным стандартом и учебной программой по дисциплине «Финансовое право».Книга позволит быстро получить основные знания по предмету, а также качественно подготовиться к зачету и экзамену.Рекомендуется студентам, аспирантам и преподавателям по юридическим, экономическим и управленческим специальностям, а также сотрудникам банков.Автор книги, Шевчук Денис Александрович, имеет опыт преподавания различных дисциплин в ведущих ВУЗах Москвы (экономические, юридические, технические, гуманитарные), два высших образования (экономическое и юридическое), более 30 публикаций (статьи и книги), Член Союза Юристов Москвы, Член Союза Журналистов России, Член Союза Журналистов Москвы, Стипендиат Правительства РФ, опыт работы в банках, коммерческих и государственных структурах (в т.ч.
Книга посвящена правовым, психологическим и криминалистическим основам следственных действий как процессуальных способов доказывания по уголовным делам. Рассмотрены общая характеристика следственного действия, психологические условия и приёмы повышения их эффективности, даны рекомендации по подготовке и проведению отдельных видов основных следственных действий, регламентируемых ныне действующим УПК РФ.Для работников правоохранительных органов, студентов, аспирантов, докторантов, профессорско-преподавательского состава юридических учебных заведений.
Содержащиеся в пособии контрольно-измерительные материалы (КИМы) для 5 класса, аналогичные материалам ЕГЭ, составлены в соответствии с программой общеобразовательных учреждений по русскому языку и учитывают возрастные особенности учащихся. В конце пособия даны ответы на все варианты тестов, предложены диктанты различных типов.Пособие адресовано учителям, ученикам, их родителям и всем, кому необходимо закрепить и систематизировать знания перед ЕГЭ.