Diferente de outras linguagens onde seus diferentes laços de repetição tem seus nomes exclusivos, no ColdFusion o loop mais básico chama-se loop mesmo, apenas com a diferença de que para praticamente tudo no ColdFusion>, o prefixo CF também faz parte do nome.
Se você já tem um pouco de afinidade com outras linguagens, verá que o cfloop se parece muito com a sintaxe do loop for do PHP e do JavaScript.
Vamos logo a um exemplo de usabilidade:
<cfloop index="i" from="1" to="3"> <cfoutput>Esta é a linha #i# do laço de repetição<br></cfoutput> </cfloop>
Podemos destacar alguns atributos:
index instancia a variável que receberá o valor de índice da linha durante a execução do laço de repetição;
from determina a partir de qual índice o laço de repetição iniciará a execução;
to determina o último índice de iteração do laço de repetição;
O resultado será algo parecido com:
Esta é a linha 1 do laço de repetição Esta é a linha 2 do laço de repetição Esta é a linha 3 do laço de repetição
Você pode usar este loop para percorrer um array. Veja:
<cfset cores = ['vermelho', 'azul', 'verde']> <cfloop index="i" from="1" to="#ArrayLen(cores)#"> <cfoutput>A cor é: #cores[i]#;<br></cfoutput> </cfloop>
Na linha 1 instanciamos um array contendo três valores com nomes de cores;
Na linha 2 usamos 1 como parâmetro para o atributo from, pois arrays começam com índice 1 no ColdFision;
Na linha 2 utilizamos a função ArrayLen fornecendo o array cores como parâmetro para que esta função nos retorne a quantidade total de itens do array. Note que usamos abertura e fechamento com cerquilha para que o ColdFusion interprete devidamente que estamos passando uma "expressão", esperando utilizar o resultado dela como valor para o atributo to;
Na linha 3 apresentamos na tela (com uso do cfoutput) a cor pegando pelo índice do array através da variável "i", que guarda o índice de iteração do loop;
O resultado será algo parecido com:
A cor é: vermelho; A cor é: azul; A cor é: verde;
Você também pode utilizar o cfloop sem necessidade de trabalhar com os parâmetros from e to. Neste caso, o script fica muito parecido com o foreach em demais linguagens de programação.
Basta que você forneça o parâmetro array para que o cfloop saiba qual array percorrer. Veja:
<cfset cores = ['vermelho', 'azul', 'verde']> <cfloop array="#cores#" index="cor"> <cfoutput>A cor é: #cor#;<br></cfoutput> </cfloop>
Neste caso, você só não terá acesso direto ao index da iteração do loop, uma vez que o index nesta abordagem estará recebendo o próprio valor dos itens do array. Neste caso, se trabalhar com o exemplo anterior não é uma opção, você pode facilmente implementar um contador, incrementando-o a cada laço de repetição.
Agora falando sobre percorrer resultados de queries com loop no ColdFusion existem duas principais formas usando o cfloop. Discorro com mais detalhes sobre estas duas formas NESTE ARTIGO.