array_walk

(PHP 4, PHP 5, PHP 7)

array_walkAplica uma determinada funcão em cada elemento de um array

Descrição

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

Aplica uma função definida pelo usuário nomeada pelo argumento funcname em cada elemento de array.

array_walk() não é afetado pelo ponteiro interno de array. array_walk() percorrerá por todo array desconsiderando a posição do ponteiro.

Parâmetros

array

O array de entrada.

funcname

Normalmente, funcname recebe dois parâmetros. O valor do parâmetro array sendo o primeiro, e a chave/índice o segundo.

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.

Apenas os valores de um array podem potencialmente ser alterados; sua estrutura não pode ser alterada, por exemplo, o programador não pode adicionar, remover ou reordenar elementos. Se o callback não respeitar esta regra, o comportamento desta função é indefinido, e imprevisível.

userdata

Se o parâmetro opcional userdata é fornecido, será passado como o terceiro parâmetro para o callback funcname.

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Erros

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

Changelog

Versão Descrição
4.0.0 Passagem da chave e userdata para funcname foi adicionado.

Exemplo #1 Exemplo da 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