array_walk

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

Descrição

int array_walk ( array arr, string func [, mixed userdata])

Aplica uma função definida pelo usuário nomeada pelo argumento func em cada elemento de arr . Normalmente , func 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 func 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 func precisar alterar realmente os valores do array , especifique que o primeiro parâmetro de func 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 func foi adicionada no PHP 4.0.0 .

array_walk( ) não é afetada pelo ponteiro interno do array arr . array_walk( ) irá percorrer todo o array independente da posição atual do ponteiro interno . Para reiniciar o ponteiro , use reset( ) . No PHP 3 , array_walk( ) reinicia o ponteiro .

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 .

Exemplo 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')

 
;

 
?



A saída do programa acima seria :

 
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_map( ) , list( ) , foreach , each( ) e call_user_func_array( ) .