For, do-while ,while ou foreach?

São muito os laços de repetição, porém cada um com suas características e particularidades.
Abaixo mostro um pouco destas diferenças e quando implementá-los.

Os laços mais comuns, pelo menos para mim, são o for e o foreach. Porém em alguns casos sou obrigado a usar o do-while.

Vamos então ver as diferenças entre for, do-while ,while e foreach:

Repetição com For

Muito utilizado.

Normalmente utilizamos quando temos uma quantidade de repetição pré-definida, ou seja, antes mesmo de iniciar o loop, já sabemos quantas vezes ele terá que repetir.


   <?php
   $tecnologias = array('PHP','HTML','CSS','JQUERY');

   for($i = 0; $i < 4; $i++) {
   	echo $tecnologias[$i];
   }
   ?>


No código acima pré-definimos que nosso laço for irá se repetir quatro vezes, imprimindo os valores do array $tecnologias na tela.

A variável $i serve para identificar o índice do array.

Poderíamos pré-definir contando quantos índices há no array.


   <?php
   $tecnologias = array('PHP','HTML','CSS','JQUERY');

   for($i = 0; $i < count($tecnologias); $i++) {
   	echo $tecnologias[$i];
   }
   ?>
  

Repetição com Do-while

Pouco utilizado.

No laço do-while temos uma condição que enquanto for verdadeira, o loop continuará.

Atentem para um detalhe, a condição é testada no final do laço, que quer dizer que o laço irá executar pelo menos uma vez.


   <?php
   $tecnologias = array('PHP','HTML','CSS','JQUERY');
   $i = 0;
   do {
   	echo $tecnologias[$i];

   	$i++;
   } while(!empty($tecnologias[$i]));
   ?>

O laço do-while é executado e no final verifica se a condição é verdadeira, ou seja, se ainda existem valores dentro do array $tecnologias. Se sim, o laço será executado novamente até que a condição seja falsa (quando array $tecnologias estiver vazio).

Notem que não precisou pré-definir a quantidade de vezes que o array irá executar. Porém ainda utilizamos um contador para referenciar os índices.

Repetição com While

While funciona da mesma forma que do-while, porém a condição é testada no início do laço. Que significa que se a condição for falsa o laço não será executado.


   <?php
   $tecnologias = array('PHP','HTML','CSS','JQUERY');
   $i = 0;

   while(!empty($tecnologias[$i])) {
   	echo $tecnologias[$i];

   	$i++;
   }
   ?>

Repetição com Foreach

Esse é o que mais utilizo em meus códigos, e provavelmente o mais utilizado pelos programadores.

É um laço muito parecido com while, mas tem uma grande vantagem sobre o while.

<?php
   $tecnologias = array('PHP','HTML','CSS','JQUERY');

   foreach($tecnologias as $tecnologia) {
   	echo $tecnologia;
   }
   ?>

O laço foreach dispensa o uso de contadores e imprime na tela exatamente na ordem em que se encontram os elementos do array. Mas a vantagem não para por aí...

Podemos utilizar índice(chaves) e valores sem muita dificuldade, apenas alterando um pouco sua estrutura.

   <?php
   $tecnologias = array('PHP','HTML','CSS','JQUERY');

   foreach($tecnologias as $chaves=>$valores) {
   	echo 'Chaves: '.$chaves;
   	echo 'Valores: '.$valores;
   	echo '<br />';
   }
   ?>

Na própria estrutura do laço, foi dividido o array em chaves e valores.

Esse artigo apenas abordou a utilização básica de cada um dos laços, porém os laços podem ter uma abordagem mais ampla dentro de um código.

Por exemplo, condições mais complexas dentro do laço while, e por aí vai...

Comentários

aline | 12/07/2016 02:07:18

post show, valeu!!!

Marcos | 26/07/2013 19:48:02
é possivel listar o mesmo esquema de array de uma variavel?

ex:

$cod_exec = $_POST['t_cod_exec'];
$tecnologias = array($cod_exec);

fiz o teste e não funcionou, vc tem alguma solução?
Grato.





Josean Matias:

Olá Marcos, talvez a função do php "explode" possa te ajudar nessa etapa. Ela vai transformar os valores da variável em array. Abraços!

Talles Airan | 14/03/2013 08:24:40
Obrigado eu entendi bastante sobre essas diferenças
Matheus Faria da Costa | 20/04/2012 22:32:57
Muito, Muito, Muito, Muito, Muito, Muito, Muito, obrigado! Ajudou muito!

Comentar