 |
(PHP 3>= 3.0.3, PHP 4)
array_walk - применяет пользовательскую функцию к каждому члену массива.
Описание
int array_walk (array array, string func [, mixed userdata])
Применяет определённую пользователем функцию func к каждому
элементу массива array.
Функции func значение элемента массива будет передано
как первый параметр, а ключ - как второй параметр. Если userdata
предоставлен, он будет передан как третий параметр в пользовательскую
функцию.
func обязана быть определяемой пользователем функцией и не может
быть встроенной функцией PHP. Таким образом, вы не можете использовать
array_walk() непосредственно с str2lower(), вы обязаны сначала
построит с ней пользовательскую функцию, а затем передать эту функцию
как аргумент.
Примечание: вместо имени функции может быть предоставлен также
массив, содержащий ссылку на объект и имя метода.
Если func требует более двух или трёх аргументов, в зависимости
от userdata, будет генерироваться предупреждение каждый
раз, когда array_walk() вызывает func. Эти предупреждения
могут подавляться путём присоединения знака '@' перед вызовом array_walk()
или путем использования error_reporting().
Примечание: если func должна работать с реальными
значениями массива, специфицируйте, что первый параметр для func
должен передаваться по ссылке. Тогда любые изменения, сделанные в этих
элементах, будут сделаны в самом массиве.
Модификация массива из func может дать непредсказуемое
поведение.
Примечание: передача ключа и userdata в func
была введена в версии 4.0.
В PHP 4 reset() должна вызываться по
мере необходимости, поскольку array_walk() не восстанавливает
по умолчанию значения массива.
Пользователи не могут самостоятельно изменять массив из callback-функции,
например, добавлять/удалять элементы, unset массив, к которому array_walk()
применяется. Если массив изменяется, поведение функции не определено.
Пример 1. array_walk()
$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'); reset ($fruits); array_walk
($fruits, 'test_alter', 'fruit'); echo "... and after:\n"; reset ($fruits); 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
|
|
См. также each() и list().
|
 |