 |
(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(). |  |