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): true

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.

Note:

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.

Note:

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

Sempre 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ão Descrição
8.2.0 O tipo do retorno agora é true; anteriormente, era bool.
8.0.0 Se callback espera que o segundo ou o terceiro parâmetro seja passado por referência, essa função agora emite um E_WARNING.

Exemplos

Example #1 Exemplo da array_walk()

<?php
$frutas = array("d" => "limão", "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. limão
a. laranja
b. banana
c. melancia
... e depois:
d. fruit: limão
a. fruit: laranja
b. fruit: banana
c. fruit: melancia

Example #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

  • array_walk_recursive() - Aplica um função do usuário recursivamente para cada membro de um array
  • iterator_apply() - Chama uma função para cada elemento em um iterador
  • list() - Cria variáveis como se fossem arrays
  • each() - Retorna o par atual de chave e valor de um array e avança o seu cursor
  • call_user_func_array() - Chama uma função de retorno com um array de parâmetros
  • array_map() - Aplica uma função em todos os elementos dos arrays dados
  • foreach