array_walk

(PHP 4, PHP 5, PHP 7, PHP 8)

array_walkAplica uma determinada função em cada elemento de um array

Descrição

array_walk(array|object&$array, callable$callback, mixed$arg = null): bool

Aplica uma função definida pelo usuário passada pelo argumento callback 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.

callback

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

Nota:

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

Nota:

Muitas funções internas (por exemplo strtolower()) lançarão um alerta se forem passados mais argumentos que o esperado e não forem utilizados diretamente no callback.

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.

arg

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

Valor Retornado

Retorna true.

Erros/Exceções

A partir do PHP 7.1.0, uma exceção ArgumentCountError será lançada se a função callback requerer mais de 2 parâmetros (o valor e a chave do item de array), ou se mais de 3 argumentos no caso de arg ser informado. Anteriormente, nesses casos um erro de nível E_WARNING seria gerado em cada vez que array_walk() chamasse o callback.

Registro de Alterações

VersãoDescrição
8.0.0 Se callback espera que o segundo ou terceiro parâmetro seja passado por referência, essa função agora emite um E_WARNING.

Exemplos

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\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 produzirá:

Antes ...: d. limao a. laranja b. banana c. melancia ... e depois: d. fruit: limao a. fruit: laranja b. fruit: banana c. fruit: melancia

Exemplo #2 Exemplo de array_walk() e funções anônimas

<?php
$elements
= ['a', 'b', 'c'];

array_walk($elements, function ($value, $key) {
echo
"{$key} => {$value}\n";
});

?>

O exemplo acima produzirá:

0 => a 1 => b 2 => c

Veja Também

To Top