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