AndersonArruda

Artigos de tecnologia ao alcance de um clique!


Loops em PHP
for while php do-while foreach loop laço repetição

Loops em PHP

14/07/2022 22:25

Vamos falar desde os loops mais básicos do PHP até loops por funções nativas, pretendo explorar tanto desempenho quanto a forma de utilizar esses loops.

Sem mais enrolações vamos aos tipos de loop nativo.


1-While

Executa um bloco de comandos enquanto a condicional é verdadeira.

Vamos ao exemplo de um loop com WHILE de forma simples e didática.


$contador = 0;
while($contador<3)
{
  echo 'contador='. $contador. '<br>';
  $contador++;
}

Vamos as explicações:


while é o comando para iniciar o bloco de repetição e passa-se a condicional para ele no meu caso enquanto o contador for menor que 3. Você pode fazer loop infinito se não tomar cuidado com a condicional por exemplo while(true) com certeza vai travar o servidor / computador que está rodando o loop.

Entre as chaves é o bloco de comando que vai ser repetido até a condicional retornar false.

Também pode utilizar-se da colon syntax como no exemplo abaixo:

while(condicao):
statement;
...
endwhile;


2-FOR

Esse é o loop mais complexo de todos.

O for ele pode incrementar, decrementar, utilizar expressões mais avançadas para calcular o movimento do mesmo como sempre multiplicar por 2 e etc...

A forma de expressão dele é a sua capacidade de imaginar para solucionar um determinado problema X, talvez não tenha ficado muito claro mas irá ficar com os exemplos abaixo:


Sintaxe:

for(exp 1; exp 2; exp 3){
//bloco de comando
}

expressão 1, expressão 2 e expressão 3 podem ter inúmeras possibilidades.


Exemplo simples:

for($i=0; $i<10; $i++)
{
    //será executado 10x do número 0 ao 9
    echo 'i='. $i. '<br>';
}


ou assim


for($i=0; $i<=10; $i++)
{
    //será executado 11x do número 0 ao 11
    echo 'i='. $i. '<br>';
}


Também pode ser executado conforme decrementa:

for($i=10; $i>0; $i--)
{
    //será executado 10x do 10 ao 1
    echo 'i='. $i. '<br>';
}


Omitindo a segunda expressão exp 2:

for($i=0; ; $i++)
{
    if($i==10)
        break;

    echo 'i='. $i. '<br>';
}


Omitindo expressões:

$i=0;
for( ; ; )
{
    if($i++ == 10)
        break;
    echo 'i='. $i. '<br>';
}


Mais complexo:

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);

Vou mostrar uma forma de fazer potência com for, "sei que existe funções da linguagem que o fazem, mas quero pra exemplificar um for mais robusto!".


function potencia(float $base, float $expoente) : float
{
    for($p=1, $val=$base; $p<$expoente; $p++, $val =$val * $base );
    return $val;
}
echo potencia(2, 3); //resultará em 8


Também pode utilizar-se da colon syntax como no exemplo abaixo:

for(exp1; exp2;exp3):
statement;
...
endfor;


3-FOREACH

Foreach é um loop que simplifica a forma de trabalhar com arrays e objetos, e somente trabalha com esses tipos caso tente trabalhar com outros tipos vai apresentar um erro.

O foreach vai andar por cada elemento dentro duma array disponibilizando o valor da dimensão atual da array e a chave.


Vou mostrar 2 exemplos:


Com chaves:

$arr = ['chave' => 'valor', 'chave_2' => 'valor 2'];
foreach($arr as $k => $v)
{
    echo 'chave='. $k. ' e valor='. $v. '<br>';
}


Sem chaves:

$arr = ['chave' => 'valor', 'chave_2' => 'valor 2'];
foreach($arr as $v)
{
    echo valor='. $v. '<br>';
}

Nesse caso acima mesmo contendo uma chave especificada para cada valor ela será omitida no foreach.


foreach($arr as $v)
{
    echo 'valor='. $v. '<br>';
}


Também pode utilizar-se da colon syntax como no exemplo abaixo:

foreach($array as $v):
statement;
...
endforeach;


Também existem funções que podem ser exploradas, não vou abordar aqui pois ficaria demasiadamente extenso porém vale além de citar aqui apontar a documentação oficial.

array_map: https://www.php.net/manual/en/function.array-map.php

array_reduce: https://www.php.net/manual/en/function.array-reduce.php

array_walk: https://www.php.net/manual/en/function.array-walk.php

array_walk_recursive: https://www.php.net/manual/en/function.array-walk-recursive.php

Também existem classes que podem ser utilizadas como loop como ArrayIterator, PHP é uma linguagem bem completa e com muito recurso!


4- DO-WHILE

O laço do-while é similar ao laço while com a diferença de que a expressão condicional é verificada no final de cada iteração em vez de no começo.

Ou seja no while ele primeiro valida a expressão e depois executa e no do-while ele primeiro executa o bloco e depois valida a expressão.

Vamos a alguns exemplos:


$contador = 0;
do {
   echo 'contador atual é: '. ($contador++). '<br>';
} while($contador < 3);


5-COMANDOS ADICIONAIS

Dentro de loops é possível utilizar alguns recursos como por exemplo:

break: o break faz com que o loop termine imediatamente.

continue: o continue pula a posição atual para a próxima caso não exista termina o loop.


Também é possível fazer continue e break superior quando se tem um loop dentro de outro loop vou citar um exemplo simples com 2 loops diferentes.

$arr = [1,2,3];
foreach($arr as $n)
{
  for($i=3; $i>0; $i--){
    if($i==1)
    {
      continue 1;
    }
    echo 'i='. $i. ' e n='. $n. '<br>';
  }
}

O mesmo vale para o break.


Lembrando que aqui são exemplos nada muito aprofundado mais para apresentação do conteúdo, loops são extremamentes importantes na programação.


O loop nada mais é do que executar diversas vezes um bloco de comando até que uma determinada tarefa seja satisfeita, já usei loops em diversas situações no meu tempo de experiência em programação, antes de no javascript existir o recurso closest, eu utilizei do while para procurar elementos superiores através do parentNode e só parava quando chegava na tag documentElement ou encontra-se a tag que eu buscava.

Os loops são antigos e estão presentes em basicamente todas as linguagens de programação.


Espero que esse artigo possa ajudar a todos, deixem seus comentários, dêem sugestões para novos conteúdos, compartilhem com seus amigos iniciante isso me ajuda muito e com certeza ajudará muito seu amigo iniciante.


Agradeço profundamente por ter chego até aqui.

Nos vemos no próximo artigo! Até mais!


Espaço para publicidade
20 Comentário(s)
bWYp
25/04/2024 02:13

ZJjo

bWYp
25/04/2024 02:13

ZJjo

bWYp
25/04/2024 02:13

ZJjo

bWYp
25/04/2024 02:13

ZJjo

bWYp
25/04/2024 02:13

ZJjo

bWYp
25/04/2024 02:13

ZJjo

bWYp
25/04/2024 02:13

ZJjo

bWYp
25/04/2024 02:13

ZJjo

bWYp
25/04/2024 02:13

ZJjo

bWYp
25/04/2024 02:13

ZJjo

bWYp
25/04/2024 02:13

ZJjo

bWYp,,)"'.(,,)
25/04/2024 02:14

ZJjo

bWYp'zAfDtG<'">hGtvNK
25/04/2024 02:14

ZJjo

bWYp AND (SELECT 6794 FROM (SELECT(SLEEP(5)))zdiF)
25/04/2024 02:14

ZJjo

bWYp
25/04/2024 02:14

ZJjo,"((..(.,'

bWYp
25/04/2024 02:14

ZJjo'POeVVA<'">DCGZsK

bWYp
25/04/2024 02:14

ZJjo') AND (SELECT 6557 FROM (SELECT(SLEEP(5)))YZiC) AND ('EoCv'='EoCv

bWYp
25/04/2024 02:14

ZJjo' AND (SELECT 6557 FROM (SELECT(SLEEP(5)))YZiC) AND 'xjzo'='xjzo

bWYp
25/04/2024 02:14

ZJjo) AND (SELECT 6557 FROM (SELECT(SLEEP(5)))YZiC) AND (8955=8955

bWYp
25/04/2024 02:14

ZJjo AND (SELECT 6557 FROM (SELECT(SLEEP(5)))YZiC)

Todos os direitos reservados. © 2021-2031
SBBlog Powered By Powered By Sysborg | Powered By Anderson Arruda