array_walk
(PHP 4, PHP 5)
array_walk — Aplica uma determinada funcão em cada elemento de um array
Descrição
Retorna TRUE em caso de sucesso ou FALSE em falhas.
Aplica uma função definida pelo usuário nomeada pelo argumento funcname em cada elemento de array . Normalmente, funcname 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 funcname 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 funcname precisar alterar realmente os valores do array, especifique que o primeiro parâmetro de funcname 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 funcname foi adicionada no PHP 4.0.0.
array_walk() não é afetada pelo ponteiro interno do array array . array_walk() irá percorrer todo o array independente da posição atual do ponteiro interno.
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.
Example#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');
?>
O exemplo acima irá imprimir:
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_walk_recursive(), create_function(), list(), foreach, each(), call_user_func_array(), array_map() e informações sobre o tipo callback.