Manual do PHP
Anterior |  | Próxima

# array_walk

(PHP 3 >= 3.0.3, PHP 4, PHP 5)

array_walk -- Aplica uma determinada funcão em cada elemento de um array

## Descrição

bool array_walk ( array arr, string func [, mixed userdata] )

Retorna `TRUE` em caso de sucesso ou `FALSE` em falhas.

Aplica uma função definida pelo usuário nomeada pelo argumento `func` em cada elemento de `arr`. Normalmente, `func` recebe dois argumentos: o primeiro é o valor do elemento e o segundo, sua chave. Se `userdata` for especificado, ele será usado como terceiro argumento da função do usuário.

Se `func` necessita de mais argumentos do que o que está sendo passado para ela, um erro do nível E_WARNING será gerado a cada vez que array_walk() executar `func`. Esses avisos podem ser suprimidos adicionando o operador @ à chamada da função array_walk(), ou usando error_reporting().

> Nota: Se `func` precisar alterar realmente os valores do array, especifique que o primeiro parâmetro de `func` deve ser passado por referência. Então qualquer mudança feita nesses elementos serão feitas no próprio array também.

> Nota: A passagem das chaves e do terceiro argumento para `func` foi adicionada no PHP 4.0.0.

array_walk() não é afetada pelo ponteiro interno do array `arr`. array_walk() irá percorrer todo o array independente da posição atual do ponteiro interno. Para reiniciar o ponteiro, use reset(). No PHP 3, array_walk() reinicia o ponteiro.

Usuários não podem alterar o array a partir da função definida para ser usada. Por exemplo, adicionar/remover elementos, removerá o array no qual array_walk() está sendo aplicada. Se o array for alterado, o comportamento desta função se torna imprevisível.

Exemplo 1. Exemplo de array_walk()
`<?php $frutas = array("d" => "limao", "a" => "laranja", "b" => "banana", "c" => "melancia"); function test_alter(&$item1, $key, $prefix) { $item1 = "$prefix: $item1"; } function test_print($item2, $key) { echo "$key. $item2<br>\n"; } echo "Antes ...:\n"; array_walk($frutas, 'test_print'); array_walk($frutas, 'test_alter', 'fruta'); echo "... e depois:\n"; array_walk($frutas, 'test_print'); ?>`
A saída do programa acima seria:
`Antes ...: d. limao a. laranja b. banana c. melancia ... e depois: d. fruit: limao a. fruit: laranja b. fruit: banana c. fruit: melancia`

Veja também array_map(), list(), foreach, each() e call_user_func_array().

Anterior | Principal | Próxima
array_walk_recursive | Acima | array