Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Sobre o while

Boa tarde.

1) No código:

while($arquivo = $diretorioAtual->read())
{

}

Confesso que estou confusa como se lê e interpreta essa sintaxe entre parenteses no while. Eu já usei o while para fazer algo como

while($numero % 2 == 0)
{
    //Faça isso;
}

Porém nunca fiz isso de receber algo no parentese do while como fizemos na aula. ** **Entendo que temos que colocar condições no while.

3 respostas

Ótima pergunta, Karolina. O while executa o código dentro do bloco enquanto a condição entre parêntesis for algo que possa ser interpretado como verdadeiro. Isso pode ser um booleano true mesmo ou qualquer outra coisa que quando convertido para booleano dê verdadeiro.

Quando executamos $arquivo = $diretorioAtual->read() o método read retorna pra gente o nome do próximo arquivo no diretório ou false caso não haja mais arquivos, por exemplo.

Além disso, a expressão $arquivo = $diretorioAtual->read() após atribuir o valor à variável $arquivo retorna esse valor também. Isso que possibilita coisas como $mesmoArquivoMasEmOutraVariavel = $arquivo = $diretorioAtual->read(), entende?

Sendo assim, como o valor de $arquivo é retornado, ele é avaliado pelo while e quando ele se torna false a gente sai do loop. :-)

Essa é uma explicação relativamente complexa embora o conceito se torne simples conforme a gente se habitue, então se não tiver ficado claro, só dizer.

Boa tarde. Entendi, só deu dúvida em uma coisa. Você disse que " método read retorna pra gente o nome do próximo arquivo no diretório ou false" porém o While entende condições que retornem true ou false certo? No caso de quando ele retorna o nome do próximo arquivo e não false, como o while entende esse nome do arquivo como verdadeiro?

solução!

Qualquer expressão dentro do while (ou de um if, por exemplo) é convertida para booleana. Nesse cenário, estas regras se aplicam: https://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting

Ou seja, uma string não vazia é interpretada como true nesse caso. :-)