Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Pq está errado meu código?

for ($contador = 0 && $restodadivisao = $contador % 2 ; $contador <= 100 ; $contador ++ ) {
    if ($restodadivisao == 1) {
        echo "#$contador" . PHP_EOL;
    }
}
1 resposta

Danilo, Tudo bem com você?

Vamos lá.

for ($contador = 0 && $restodadivisao = $contador % 2; $contador <= 100 ; $contador ++ ) {

Aqui tem 2 pontos:

Primeiro que esta primeira parte do laço for, só é avaliada uma vez, na primeira vez que roda o laço for, ou seja a variável $restodadividsao vai assumir o valor 0 e não vai mudar.

Vide: https://www.php.net/manual/pt_BR/control-structures.for.php

A primeira expressão (expr1) é avaliada (executada), uma vez, incondicionalmente, no início do laço.

Segunda ponto, se você for realizar mais de uma declaração aqui, a forma correta é separar por virgula.

Mas para fazer com que esta atribuição seja feita em todas as iterações do laço, você pode jogar na ultima expressão e separada por virgula, deste modo:

for ($contador = 0; $contador <= 100; $contador++, $restodadivisao = $contador % 2) {

Todas as vezes esta expressão na terceira parte do laço for será executada e o valor de $restodadivisao será atualizado.

Por fim tem um erro no echo, a váriavel de contador não precisa estar entre aspas.

Segue o código completo, testado:

for ($contador = 0; $contador <= 100; $contador++, $restodadivisao = $contador % 2) {
        if ($restodadivisao == 1) {
            echo $contador . PHP_EOL;
        }
    }  

Por favor se sanou tua dúvida, marcar este tópico como solucionado, ou se preciso postar dúvidas. Um abraço