Чтение онлайн

на главную - закладки

Жанры

Курс "Язык программирования PHP"

Савельева Нина Владимировна

Шрифт:

Если необходимо работать с реальными значениями массива, а не с их копиями, следует передавать аргумент в функцию по ссылке. Однако нужно иметь в виду, что нельзя добавлять или удалять элементы массива и производить действия, изменяющие сам массив, поскольку в этом случае результат работы array_walk считается неопределенным.

<?php

$books1 = array(

"А.С. Пушкин"=>"Руслан и Людмила",

"Л.Н. Толстой"=>"Война и мир",

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

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

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

function try_walk($val,$key,$data){

echo "$data \"$val\" написал $key<br>";

}

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

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

array_walk($books1,"try_walk","Роман");

?>

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

Роман "Руслан и Людмила" написал А.С. Пушкин

Роман "Война и мир" написал Л.Н. Толстой

Роман "Герой нашего времени"

написал М.Ю. Лермонтов

Заметим, что мы не изменили значений у элементов массива. Чтобы их изменить, надо было передавать значения в переменную $val функции try_walk по ссылке.

<?php

$books1 = array(

"А.С. Пушкин"=>"Руслан и Людмила",

"Л.Н. Толстой"=>"Война и мир",

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

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

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

function try_walk(&$val,$key){

$key = "Автор: " .$key ."<br>";

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

echo $key.$val;

}

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

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

array_walk($books1,"try_walk");

print_r($books1);

?>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Функция array_slice

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

array_slice (массив,

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

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

<?php

$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, то будет выделен подмассив, имеющий ровно столько элементов, сколько задано этим параметром. Длину можно указывать и отрицательную. В этом случае интерпретатор удалит с конца массива число элементов, равное модулю параметра длина.

<?php

$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

?>

Поделиться:
Популярные книги

Газлайтер. Том 10

Володин Григорий
10. История Телепата
Фантастика:
боевая фантастика
5.00
рейтинг книги
Газлайтер. Том 10

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Хозяин Теней 4

Петров Максим Николаевич
4. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 4

Картофельное счастье попаданки

Иконникова Ольга
Фантастика:
фэнтези
5.00
рейтинг книги
Картофельное счастье попаданки

Экзорцист: Проклятый металл. Жнец. Мор. Осквернитель

Корнев Павел Николаевич
Фантастика:
фэнтези
героическая фантастика
5.50
рейтинг книги
Экзорцист: Проклятый металл. Жнец. Мор. Осквернитель

Доктора вызывали? или Трудовые будни попаданки

Марей Соня
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Доктора вызывали? или Трудовые будни попаданки

Метатель

Тарасов Ник
1. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

Хозяин Теней 2

Петров Максим Николаевич
2. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 2

Сумеречный стрелок 7

Карелин Сергей Витальевич
7. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок 7

Жизнь под чужим солнцем

Михалкова Елена Ивановна
Детективы:
прочие детективы
9.10
рейтинг книги
Жизнь под чужим солнцем

Красноармеец

Поселягин Владимир Геннадьевич
1. Красноармеец
Фантастика:
боевая фантастика
попаданцы
4.60
рейтинг книги
Красноармеец