Forum und email

array_walk

(PHP 4, PHP 5)

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

Descrição

bool array_walk ( array &$arrary , string $funcname [, mixed $userdata ] )

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.