Ser Programador

Entendendo o loop do Adobe ColdFusion

Veremos neste artigo como trabalhar com laços de repetição no CF.


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.