array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'pt_BR', ), 'this' => array ( 0 => 'function.array-walk.php', 1 => 'array_walk', ), 'up' => array ( 0 => 'ref.array.php', 1 => 'Funções para Array', ), 'prev' => array ( 0 => 'function.array-walk-recursive.php', 1 => 'array_walk_recursive', ), 'next' => array ( 0 => 'function.array.php', 1 => 'array', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'pt_BR', 'path' => 'reference/array/functions/array-walk.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
array_walk — Aplica uma determinada função em cada elemento de um array
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.
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 decallback
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
.
Retorna true
.
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
.
Versão | Descriçã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 .
|
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