foreach

O PHP4 ( mas não o PHP3 ) inclui um construtor foreach , muito parecido com o PERL e outras linguagens . Isto oferece uma maneira fácil de iterar sobre matrizes . foreach funciona somente com arrays , e lançará um erro se tentar utilizá-lo em uma variável de qualquer tipo diferente ou em variáveis não inicializadas . duas sintaxes ; a segunda é uma abreviatura , mas útil , da primeira :

 
foreach(

 
expressao_array

 
as

 
$valor

 
)

 
instrucoes

 
foreach(expressao_array

 
as

 
$chave

 
=

 
$valor

 
)

 
instrucoes





A primeira forma varre uma dada matriz dada por expressao_array . Em cada ' loop' , o valor do elemento corrente é atribuído a $valor e o ponteiro interno da matriz é avançado em uma posição (assim , no próxima iteração você estará olhando para o próximo elemento ) .

A segunda forma faz a mesma coisa , exceto pelo fato de que a chave do elemento atual será atribuído à variável $chave em cada iteração .

Nota : Quando o foreach Quando o foreach inicia sua primeira execução , o ponteiro interno da matriz é zerado automaticamente para o primeiro elemento do array . Isto significa que você não precisa chamar reset( ) antes de um loop foreach .



Nota : Note também que foreach opera sobre uma cópia do array especificado , não o próprio array , portanto o ponteiro da array não é modificado como na instrução each( ) , que altera o elemento do array selecionado , mas isso não se reflete o array original .



Nota: foreach tem a habilidade de evitar mensagens de erro com '@'.

Você pode ter notado que os seguintes itens são funcionalmente idênticos :

 
reset

 
(

 
$arr)

 
;

 
while

 
(list(

 
,

 
$value

 
)

 
=

 
each

 
($arr)

 
)

 
{

 
echo

 
"Valor

 
:

 
$value

 
br

 
\n"

 
;

 
}

 
foreach

 
($arr

 
as

 
$value

 
)

 
{

 
echo

 
"Valor

 
:

 
$value

 
br

 
\n"

 
;

 
}



Os seguintes também são funcionalmente idênticos:
 
reset

 
(

 
$arr)

 
;

 
while

 
(list($key

 
,

 
$value

 
)

 
=

 
each

 
($arr)

 
)

 
{

 
echo

 
"Chave

 
:

 
$key

 
;

 
Valor

 
:

 
$value

 
br

 
\n"

 
;

 
}

 
foreach

 
($arr

 
as

 
$key

 
=

 
$value

 
)

 
{

 
echo

 
"Chave

 
:

 
$key

 
;

 
Valor

 
:

 
$value

 
br

 
\n"

 
;

 
}





Mais alguns exemplos para demonstrar os usos :

 
/*

 
exemplo

 
foreach

 
1

 
:

 
somente

 
valores

 
*

 
/

 
$a

 
=

 
array

 
(

 
1

 
,

 
2

 
,

 
3

 
,

 
17)

 
;

 
foreach

 
($a

 
as

 
$v

 
)

 
{

 
print

 
"Valor

 
atual

 
de

 
\$a

 
:

 
$v.\n"

 
;

 
}

 
/

 
*

 
exemplo

 
foreach

 
2

 
:

 
valores

 
(com

 
as

 
chaves

 
impressas

 
para

 
ilustração

 
)

 
*

 
/

 
$a

 
=

 
array

 
(1

 
,

 
2

 
,

 
3

 
,

 
17)

 
;

 
$i

 
=

 
0

 
;

 
/

 
*

 
para

 
exemplo

 
somente

 
*

 
/

 
foreach($a

 
as

 
$v

 
)

 
{

 
print

 
"\$a[$i

 
]

 
=

 
$v.\n"

 
;

 
$i++

 
;

 
}

 
/

 
*

 
exemplo

 
foreach

 
3

 
:

 
chaves

 
e

 
valores

 
*

 
/

 
$a

 
=

 
array

 
(

 
"um

 
"

 
=

 
1

 
,

 
"dois

 
"

 
=

 
2

 
,

 
"três

 
"

 
=

 
3

 
,

 
"dezessete

 
"

 
=

 
17

 
)

 
;

 
foreach($a

 
as

 
$k

 
=

 
$v

 
)

 
{

 
print

 
"\$a[$k

 
]

 
=

 
$v.\n"

 
;

 
}

 
/

 
*

 
exemplo

 
foreach

 
4

 
:

 
arrays

 
multidimensionais

 
*

 
/

 
$a[0][0

 
]

 
=

 
"a"

 
;

 
$a[0][1

 
]

 
=

 
"b"

 
;

 
$a[1][0

 
]

 
=

 
"y"

 
;

 
$a[1][1

 
]

 
=

 
"z"

 
;

 
foreach($a

 
as

 
$v1

 
)

 
{

 
foreach

 
($v1

 
as

 
$v2

 
)

 
{

 
print

 
"$v2\n"

 
;

 
    }

 
}

 
/

 
*

 
exemplo

 
foreach

 
5

 
:

 
arrays

 
dinâmicos

 
*

 
/

 
foreach(array(1

 
,

 
2

 
,

 
3

 
,

 
4

 
,

 
5

 
)

 
as

 
$v

 
)

 
{

 
print

 
"$v\n"

 
;

 
}