Воскресенье, 27.07.2025, 19:09 Приветствую Вас Гость

On-line: Книги, учебники, статьи

Главная | Регистрация | Вход | RSS

Функция array_walk()

array_walk()

Достаточно важная функция, позволяющая применять пользовательскую функцию к каждому элементу массива.

Синтаксис:
bool array_walk(array arr, callback func [, mixed userdata])

Как видно из синтаксиса этой функции, она применяет пользовательскую функцию func к каждому элементу массива arr. В пользовательскую функцию передаются два или три аргумента: значение текущего элемента, его индекс и аргумент userdata. Последний аргумент является необязательным. Заметим, что в случае, если func требует более трех аргументов, при каждом ее вызове будет выдаваться предупреждение, и, чтобы они не выдавались, нужно поставить знак "@" перед функцией array_walk(). Заметим также, что функция func получает значения и индексы массива arr таким образом, что не может их изменять. Если возникает такая необходимость, нужно передавать аргумент arr по ссылке. В этом случае все изменения отразятся в массиве.

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

Пример:
  $name = array ("m"=>"maks", "i"=>"igor", "s"=>"sergey");
  function print_array ($item, $key)
  {
  echo "$key=>$item
\n";
  }
  array_walk ($name, 'print_array');
?>

И что вышло:

Результат:m=>maks
i=>igor
s=>sergey



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

Давайте теперь возьмем массив, и увеличим значения каждого его элемента на единицу.

Пример:
  $number = array ("1"=>"15", "2"=>"20", "3"=>"25");
  function printarray ($item, $key) 
  {
  echo "$key=>$item
\n";
  }
  function add_array (&$item, $key) 
  // параметр $item передаем по ссылке, так как  
  // его нам надо изменять
  {
  $item = $item + 1;
  }
  echo("Before:
");
  array_walk ($number, 'printarray');
  echo("After:
");
  array_walk ($number, 'add_array');
  array_walk ($number, 'printarray');
?>

Результат:Before:
1=>15
2=>20
3=>25
After:
1=>16
2=>21
3=>26




























Вход на сайт
Поиск
Календарь
«  Июль 2025  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031
Архив записей
Наш опрос
Как Вам удобнее??
Всего ответов: 341
Мини-чат
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0