HOME PAGE JAVASCRIPT
Botões Cálculos Datas Essenciais Janelas Flutuantes Menus
HTML CSS FLASH PHP ASP GERADORES CORES MISCELANEA Contato  






Introdução a linguagem PHP - For e Foreach

For e Foreach são comandos que servem para manter uma porção do código executando repetidamente.

Também conhecidos como estruturas de repetição, iterações ou loops, esses comandos mantém a execução até que seu argumento seja falso.

Outrosim, quando se quer que as instruções sejam executadas várias vezes, em vez de adicionar várias linhas de código quase iguais em um script, pode-se usar loops para executar uma tarefa como essa.

For

O loop for é usado quando você sabe de antemão quantas vezes o script deve ser executado.

A estrutura principal de for é:
<?php 
for (valor inicial; comparação; modificação do valor) { 
código que será executado;
}
?>

Exemplo

<?php
for ($x=1; $x<=4; $x++) {
echo "Linha n°: $x <br>";
}
?>
Resultado:
Linha n°: 1
Linha n°: 2
Linha n°: 3
Linha n°: 4

As expressões dentro dos parênteses são separadas utilizando o ;(ponto e virgula) e definem respectivamente:

  • Valor inicial. Utilizada para iniciar a nossa variável de controle (contador) como por exemplo $x = 1.
  • Comparação. Condição de avaliação em cada iteração (repetição). Expressão que é avaliada no inicio de cada iteração do looping, e caso retorne falso, o looping for será encerrado. A segunda expressão como você pode ver pode ser considerada a condicional do nosso looping. Exemplo $x<=4.
  • Modificação do valor. Expressão que é avaliada no final de cada iteração do looping, normalmente utilizada para alterar o valor da variável de controle, como por exemplo utilizar o operador de incremento $x++.

Foreach

O loop 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.
É usado para fazer um loop através de cada par chave / valor em um matriz. Sintaxe:

<?php
foreach ($array as $valor) {
   código que será executado;
 } 
?>
ou
<?php
foreach ($array as $chave => $valor) {
	código que será executado;
 }
?>

A primeira forma varre uma matriz dada por $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.

Exemplo 1: somente valores

<?php
$a = array(1, 2, 3, 17);

foreach ($a as $v) {

echo "Valor atual de \$a: $v.\n";

}

?>

Resultado:

Valor atual de $a: 1. Valor atual de $a: 2. Valor atual de $a: 3. Valor atual de $a: 17.

Exemplo 2: valores (com a sua notação de chave de acesso mostrado para ilustração)

<?php
$a = array(1, 2, 3, 17);

$i = 0; /* para exemplo somente */

foreach ($a as $v) {

echo "\$a[$i] => $v.\n";

$i++;

}

?>

Resultado:

$a[0] => 1. $a[1] => 2. $a[2] => 3. $a[3] => 17.

Exemplo 3: chaves e valores

<?php
$a = array (

"um" => 1,

"dois" => 2,

"três" => 3,

"dezessete" => 17

);

foreach ($a as $k => $v) {

echo "\$a[$k] => $v.\n";

}

?>

Resultado:

$a[um] => 1. $a[dois] => 2. $a[três] => 3. $a[dezessete] => 17.

Exemplo 4: arrays multidimensionais

<?php
$a = array();

$a[0][0] = "a";

$a[0][1] = "b";

$a[1][0] = "y";

$a[1][1] = "z";


foreach ($a as $v1) {

foreach ($v1 as $v2) {

echo "$v2\n";

}

}

?>

Resultado:

a b y z

Exemplo 5: arrays dinâmicos

<?php
foreach (array(1, 2, 3, 4, 5) as $v) {

echo "$v\n";

}

?>

Resultado:

1 2 3 4 5

Exemplo de foreach aplicado a um leitor de RSS

<?php
echo ("<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\">\n");
getFeed("http://g1.globo.com/dynamo/economia-e-negocios/rss2.xml");

function getFeed($feed_url) {
$content = file_get_contents($feed_url);
$x = new SimpleXmlElement($content);
echo "<ul>";
foreach($x->channel->item as $entry) {

echo "<li><a href='$entry->link' title='$entry->title'>" . $entry->title . "</a><br>";
echo "Data: " . $entry->pubDate . " - Category: " . $entry->category . "<br>";
echo $entry->description ."<br>";

}
echo "</ul>";
}

?>

Mostrar resultado