Recorrido arrays y colecciones

  • Por
Vemos con detalle el bucle For Each para realizar recorridos, incluso para realizar recorridos genéricos a formularios.
En nuestro manual de ASP hemos visto varias estructuras de control, una de ellas todavía la tenemos que ver en algunos ejemplos más. Se trata de la estructura FOR...EACH que sirve para recorrer todos los elementos de una colección, por ejemplo un array o una colección como las variables del servidor. Para acabar veremos un ejemplo práctico adicional que consiste en el recorrido genérico de las variables que recibimos por POST o por GET.

FOR...EACH

El bucle FOR...EACH se utiliza con la siguiente sintaxis:

For Each elemento in colección
   'Hacemos cosas para cada elemento de la colección
Next

Recorrido genérico de Arrays

Un ejemplo para ver el funcionamiento de este bucle podría ser el siguiente recorrido genérico de un array

<%
dim nombres(3)
nombres(1) = "pepe"
nombres(2) = "luis"
nombres(3) = "margarita"
for each valor in nombres
   response.write valor & "<br>"
next
%>


Se recorre el array de nombres recogiendo cada valor e imprimiendolo. Se puede ver el ejemplo en funcionamiento.

Recorrido genérico de colecciones

Las colecciones son como arrays con la diferencia que se puede acceder al valor que guarda el array en cada posición con una cadena de caracteres en vez de un número.

Un ejemplo muy interesante de recorrido de colecciones lo vimos en su momento para mostrar todas las variables del servidor, las ServerVariables.

<%
For Each elemento in Request.ServerVariables
   Response.Write elemento&" : "&Request.ServerVariables(elemento)& "<br>"
Next
%>


Este ejemplo es más interesante, por que se trata de una colección y no un array típico. La colección de ServerVaribles se accede de la siguiente manera.

request.servervariables("nombre de la variable")

donde "nombre de la variable" podría ser HTTP_ACCEPT_LANGUAGE, APPL_PHYSICAL_PATH o cualquier otra variable de la lista de serverVariables, que se puede ver en el ejemplo de este script.

Recorrido genérico de las variable enviadas por POST o GET

Otro ejemplo interesante y práctico es el que viene a continuación. Se trata de recoger las variables que le llegan a la página de un formulario o por la URL de manera genérica, es decir, sin importarnos cuántos elementos llegan y cuáles son. Este ejemplo lo puedes llegar a necesitar cuando no sepas que tipo de formulario te están mandando ni sepas cuáles ni cuántas variables te envian por la URL.

En nuestro ejemplo vamos a centrarnos en un formulario con method POST, con lo que recogeremos las variables con el método request.Form. Los ejemplos para una lista de variables llegada por la URL, con el método GET, se pueden recoger de un modo similar, usando request.QueryString.

<%
For Each elemento in Request.form
   Response.Write elemento & ": " & Request.form(elemento) & "<br>"
Next
%>


Es exactamente el mismo ejemplo que para recorrer una colección como la ServerVaribles, pero mostrando ahora la colección request.form.

Podremos utilizar este script cuando queramos realizar recorridos genéricos. En las siguientes líneas se puede ver un ejemplo de formulario que utilizamos para ilustrar este ejemplo por la práctica.

<form action="recorridoform.asp" method="POST">
Nombre: <input type="Text" name="nombre">
<br>
<br>
Edad: <input type="Text" name="edad" size=3>
<br>
<br>
Profesion: <input type="Text" name="profesion">
<br>
<br>
<input type="Submit" value="Enviar">
</form>


Se puede ver el ejemplo de las dos páginas funcionando.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Eddy Pérez Cobas

20/1/2007
Estos ejemplos son muy útiles para my, ya que estoy pensando en crear un método en C#, que me recorra todos los módulos de una aplicación, y según la autenticación del usuario, extraer de una base de datos una cadena que me identifique una hoja de estilo y aplicarle esa hoja de estilo a todos los archivos aspx(web form) de la aplicación, así, cada cliente tendrá un diseño personalizado de my aplicación cada vez que la visite.