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

Solucionado (ver solução)

O objetivo era contar somente impares de 1 à 99 . Mas entra em loop!

Boa tarde. Por favor, não entendi porque nesse caso entra em loop! O objetivo era contar somente impares de 1 à 99 .

<?php

$contador = 1;

for ($contador = 1; $contador <=99; $contador + 2) {
    echo "$contador" . PHP_EOL;
}
2 respostas
solução

Boa tarde, você errou no incremento da variável contador.

no caso ou você usa o atalho para "$contador ++" para incrementar de 1 em 1, ou vc pode usar a sintaxe "$contador +=2", onde o sinal de mais antes do igual quer dizer a própria variável mais o valor 2. Seria o equivalente a fazer "$contador = $contador + 2".

Só que esse código seu apesar de funcionar, imprimir apenas números impares, não entrou muito na ideia de saber se o número é de fato impar ou não. Imagina que ao invés de começar com o valor fixo 1, o usuário insere o número que deseja iniciar, enquanto ele começar com números impares o seu código funciona, mas se ele digitar números pares o seu código não funcionaria.

O ideal nesse caso seria realizar a operação de MOD, que pega o resto de uma divisão. Então seria algo assim:

if ($contador % 2 != 0) { // se o resto da divisão da variável/2 for diferente de 0, imprime
        echo $contador . PHP_EOL;
for($contador = 1; $contador <= 99; $contador +=2){
        echo $contador . PHP_EOL;
}