Foros del Web » Programando para Internet » ASP Clásico »

Arrays Asociativos con varias dimensiones

Estas en el tema de Arrays Asociativos con varias dimensiones en el foro de ASP Clásico en Foros del Web. Hola a tod@s: Estoy queriendo hacer lo equivalente a este código de PHP en ASP relativo a arrays asociativos: Código PHP: $datos_pais  =        array(                      'es'  ...
  #1 (permalink)  
Antiguo 15/05/2012, 18:00
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Arrays Asociativos con varias dimensiones

Hola a tod@s:

Estoy queriendo hacer lo equivalente a este código de PHP en ASP relativo a arrays asociativos:

Código PHP:

$datos_pais 
=        array(
                    
'es' => array(
                                
'nombre' => 'España',
                                
'moneda' => 'peseta'
                            
),
                    
'fr' => array(
                                
'nombre' => 'Francia',
                                
'moneda' => 'franco'
                            
)
                    );

$codPais 'es';
echo 
'El país llamado '.$datos_pais[$codPais]['nombre'].' tenía una moneda llamada ['.$datos_pais[$codPais]['moneda'].'] antes del Euro';
//Esto debería mostrar el siguiente texto
//El país llamado España tenía una moneda llamada [peseta] antes del Euro 
¿Cómo sería este ejemplo de ARRAY para ASP clásico en VBScript?

Lo único que he llegado a encontrar en los buscadores es que los arrays asociativos en ASP se hacen a través del objeto Dictionary.
Pero solamente he llegado a encontrar ejemplos para una sola dimensión.
__________________
Saludos,

zacktagnan.
=================================================
  #2 (permalink)  
Antiguo 16/05/2012, 12:34
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Respuesta: Arrays Asociativos con varias dimensiones

¿Qué, nadie tiene idea de cómo hacer lo que pido?

Yo, con lo del Dictionary, solamente llego a construir un array de una sola dimensión tal y como sigue:
Código ASP:
Ver original
  1. Dim datos_pais, codPais
  2. Set datos_pais = CreateObject("Scripting.Dictionary")
  3. datos_pais.Add "gr", "Grecia"
  4. datos_pais.Add "sr", "Serbia"
  5. datos_pais.Add "eg", "Egipto"
  6.  
  7. codPais = "eg"
  8. Response.Write("El país pedido con el código [" & codPais & "] tiene el nombre de " & UCase(datos_pais(codPais)) & ".")
  9.  
  10. ''''Esto debería mostrar el siguiente texto:
  11. ''''El país pedido con el código [eg] tiene el nombre de EGIPTO.

Incluso, he encontrado un ejemplo en el que en la columna del valor se mete un Array:
Código ASP:
Ver original
  1. Dim myDictionary
  2. Set myDictionary = CreateObject("Scripting.Dictionary")
  3.  
  4. myDictionary.Add "a", Array("a1","a2")
  5. myDictionary.Add "b", Array("b1","b2")
  6. myDictionary.Add "c", Array("c1","c2")

A ver si alguien aporta más ideas más acordes a lo pedido.
__________________
Saludos,

zacktagnan.
=================================================

Última edición por zacktagnan; 16/05/2012 a las 12:53
  #3 (permalink)  
Antiguo 16/05/2012, 12:57
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Respuesta: Arrays Asociativos con varias dimensiones

Bueno, pues parece que ya he encontrado uns forma de hacer lo que pretendía, buscando algo más por Internet.
Porque por aquí, últimamente, no es muy frecuente que alguien me exponga una solución a los temas que abro.

Sea como sea, ahí va el ejemplo de cómo hacer el mismo array equivalente al expuesto en PHP y varias formas de recorrer el array para sacar los valores correspondientes:

Código ASP:
Ver original
  1. Dim datos_pais
  2. Set datos_pais = CreateObject("Scripting.Dictionary")
  3. ''''Creando una segunda dimensión para cada elemento de la primera dimensión
  4. datos_pais.Add "es", CreateObject("Scripting.Dictionary")
  5. datos_pais.Add "fr", CreateObject("Scripting.Dictionary")
  6. ''''Asignando valores a cada índice
  7. datos_pais("es")("nombre")  = "España"
  8. datos_pais("es")("moneda")  = "la peseta"
  9. ''''Otra forma de asignar valores
  10. datos_pais("fr").Add "nombre",  "Francia"
  11. datos_pais("fr").Add "moneda",  "el franco"
  12.  
  13.     Response.Write("<br />")
  14. For Each key_datos_pais In datos_pais
  15.     ''''Dos formas de leer los valores
  16.     '''' 1ª Forma >> elArray(indice_1)(indice_2)
  17.     '''' 2ª Forma >> elArray.Item(indice_1).Item(indice_2)
  18.     Response.Write("<br />&bull; En el país de " & datos_pais(key_datos_pais)("nombre") & ", con el código [" & UCase(key_datos_pais) & "], el nombre de la moneda antes usada era " & datos_pais.Item(key_datos_pais).Item("moneda") & ".")
  19. Next
  20. ''''===============================================
  21. ''''Esto debería mostrar el siguiente texto:
  22. ''''• En el país de España, con el código [ES], el nombre de la moneda antes usada era la peseta.
  23. ''''• En el país de Francia, con el código [FR], el nombre de la moneda antes usada era el franco.
  24.  
  25.     Response.Write("<br />")
  26. For Each key_datos_pais In datos_pais
  27.     Response.Write("<br />&bull; [" & UCase(key_datos_pais) & "]")
  28.     For Each key_dato In datos_pais(key_datos_pais)
  29.     Response.Write("<br />&nbsp;&nbsp;&nbsp;&nbsp;>> " & UCase(key_dato) & ": " & datos_pais(key_datos_pais)(key_dato))
  30.     Next
  31. Next
  32. ''''===============================================
  33. ''''Esto debería mostrar el siguiente texto:
  34. ''''• [ES]
  35. ''''    >> NOMBRE: España
  36. ''''    >> MONEDA: la peseta
  37. ''''• [FR]
  38. ''''    >> NOMBRE: Francia
  39. ''''    >> MONEDA: el franco

Pues eso, para todo el que pueda aprovecharse ... ¡Aprovecha!
__________________
Saludos,

zacktagnan.
=================================================

Etiquetas: arrays, asociativo, dictionary, multidimensional
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:06.