Интернет-Университет Информационных Технологий: бесплатное дистанционное образование компьютерным дисциплинам
  Лекции
Язык программирования PHP
1.   Введение в PHP
2.   Основы синтаксиса
3.   Управляющие конструкции
4.   Обработка запросов с помощью PHP
5.   Функции в PHP
6.   Объекты и классы в PHP
7.   Работа с массивами данных
8.   Работа со строками
9.   Работа с файловой системой
10.   Базы данных и СУБД. Введение в S...
11.   Взаимодействие PHP и MySQL
12.   Авторизация доступа с помощью се...
13.   Регулярные выражения
14.   Взаимодействие PHP и XML
15.   Использование шаблонов в PHP
    Экзамен
    Сдать экзамен экстерном
    Литература
    Предметный указатель
    Примеры

Язык программирования PHP
7. Лекция: Работа с массивами данных
Страницы: « | 1 | 2 | 3 | 4 | 5 | 6 | вопросы | » | учебники | для печати и PDA
  Если Вы заметили ошибку - сообщите нам.  

Применение функции ко всем элементам массива

Функция array_walk(массив, функция [, данные]) применяет созданную пользователем функцию функция ко всем элементам массива массив и возвращает true в случае успешного выполнения операции и false – в противном случае.

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

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

<?php
$books1 = array(
  "А.С. Пушкин"=>"Руслан и Людмила",
  "Л.Н. Толстой"=>"Война и мир",
  "М.Ю. Лермонтов"=>"Герой нашего времени");
// создаем функцию, которую хотим 
// применить к элементам массива

function try_walk($val,$key,$data){
   echo "$data \"$val\" написал $key<br>";
}
// применяем ко всем элементам массива 
// $book1 функцию try_walk
array_walk($books1,"try_walk","Роман");
?>
    
Пример 7.11. Применение функции ко всем элементам массива (html, txt)

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

Роман "Руслан и Людмила" написал А.С. Пушкин
Роман "Война и мир" написал Л.Н. Толстой
Роман "Герой нашего времени" 
      написал М.Ю. Лермонтов
    

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

<?php
$books1 = array(
  "А.С. Пушкин"=>"Руслан и Людмила",
  "Л.Н. Толстой"=>"Война и мир",
  "М.Ю. Лермонтов"=>"Герой нашего времени");
// создаем функцию, которую хотим 
// применить к элементам массива

function try_walk(&$val,$key){
   $key = "<p>Автор: " .$key ."<br>";
   $val = "Название: \"" . $val ."\"</p>";
   echo $key.$val;
}
// применяем ко всем элементам массива 
// $book1 функцию try_walk

array_walk($books1,"try_walk");
print_r($books1);
?>
    
Пример 7.12. Применение функции ко всем элементам массива. Вариант 2 (html, txt)

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

Автор: А.С. Пушкин
Название: "Руслан и Людмила"
Автор: Л.Н. Толстой
Название: "Война и мир"
Автор: М.Ю. Лермонтов
Название: "Герой нашего времени"
Array ( [А.С. Пушкин] => 
            Название: "Руслан и Людмила"
        [Л.Н. Толстой] => 
            Название: "Война и мир"
        [М.Ю. Лермонтов] => 
            Название: "Герой нашего времени")
    
Дальше »
  Если Вы заметили ошибку - сообщите нам.  
Страницы: « | 1 | 2 | 3 | 4 | 5 | 6 | вопросы | » | учебники | для печати и PDA
Курсы | Учебные программы | Учебники | Новости | Форум | Помощь

Телефон: (495) 253-9312, 253-9313, факс: (495) 253-9310, email: info@intuit.ru
© 2003-2006, INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование