(PHP 3>= 3.0.3, PHP 4 , PHP 5)
array_walk --
Применить пользовательскую функцию к каждому члену массива
Описание
bool
array_walk ( array &array, callback funcname [, mixed userdata] )
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
Применяет пользовательскую функцию funcname к каждому
элементу массива array. Обычно у функции
funcname два параметра.
Значение массива array в качестве первого параметра, и
ключ/индекс в качестве второго. Если указан дополнительный параметр userdata,
он будет передан в качестве третьего параметра в
функцию обратного вызова funcname.
Если в функцию funcname должно быть передано больше параметров,
чем передано на самом деле, ошибка уровня E_WARNING будет генерироваться каждый раз как array_walk()
будет вызывать funcname. Эти предупреждения могут быть подавлены добавлением
оператора управления ошибками PHP
@ в вызов
array_walk(), или использованием
error_reporting().
Замечание:
Если требуется, чтобы функция funcname изменила
значения в массиве, определите первый параметр
funcname как
ссылку. Тогда
все изменения будут применены к элементам массива.
Замечание:
Передача в funcname параметров key и userdata была
добавлена в версии 4.0.0
array_walk() не изменяет внутренний
указатель массива array. array_walk() обойдёт все элементы массива
независимо от позиции указателя. Для того чтобы сбросить указатель, используйте
функцию reset(). В PHP 3
array_walk() сбрасывает указатель.
Вы не сможете изменить непосредственно массив при помощи функции обратного вызова,
то есть добавить и удалить элементы, уничтожить значения элементов и т.д. Если
массив, к которому применяется array_walk(), изменится,
то поведение этой функции станет неопределённым и непредсказуемым.
Пример 1. Пример использования array_walk()
<?php
$fruits
= array(
"d"
=>
"lemon"
,
"a"
=>
"orange"
,
"b"
=>
"banana"
,
"c"
=>
"apple"
);
function
test_alter
(&
$item1
,
$key
,
$prefix
)
{
$item1
=
"$prefix: $item1"
;
}
function
test_print
(
$item2
,
$key
)
{
echo
"$key. $item2<br />
\n
"
;
}
echo
"Before ...:\n"
;
array_walk
(
$fruits
,
'test_print'
);
array_walk
(
$fruits
,
'test_alter'
,
'fruit'
);
echo
"... and after:\n"
;
array_walk
(
$fruits
,
'test_print'
);
?>
|
Вывод вышеприведённой программы:
Before ...:
d. lemon
a. orange
b. banana
c. apple
... and after:
d. fruit: lemon
a. fruit: orange
b. fruit: banana
c. fruit: apple
|
|
См. также array_walk_recursive(),
create_function(),
list(),
foreach,
each(),
call_user_func_array() и
array_map().