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