Foros del Web » Programando para Internet » PHP »

Array asociativo con foreach

Estas en el tema de Array asociativo con foreach en el foro de PHP en Foros del Web. Hola a tod@s: Mi duda es que tengo este array declarado: Código PHP: $comunidad = array( "Andalucia" =>array( "Almeria" => "256" ,                                       "Cadiz" => "344" ...
  #1 (permalink)  
Antiguo 26/04/2011, 16:43
 
Fecha de Ingreso: abril-2011
Ubicación: Alicante
Mensajes: 52
Antigüedad: 13 años
Puntos: 3
Pregunta Array asociativo con foreach

Hola a tod@s:

Mi duda es que tengo este array declarado:

Código PHP:
$comunidad= array("Andalucia"=>array("Almeria"=>"256",
                                     
"Cadiz"=>"344",
                                     
"Cordoba"=>"331",
                                     
"Granada"=>"388",
                                     
"Huelva"=>"195",
                                     
"Jaen"=>"271",
                                     
"Malaga"=>"385",
                                     
"Sevilla"=>"460"),
                  
"Aragón"=>array( "Huesca"=>"201",
                                   
"Teruel"=>"149",
                                   
"Zaragoza"=>"378"),
                  
"Cantabria"=>array("Cantabria"=>"327"),
            
"Castilla y León"=>array("Avila"=>"173",
                                     
"Burgos"=>"209",
                                     
"Leon"=>"279",
                                     
"Palencia"=>"120",
                                     
"Salamanca"=>"252",
                                     
"Segovia"=>"138",
                                     
"Soria"=>"71",
                                     
"Valladolid"=>"229",
                                     
"Zamora"=>"216"));

//Funcion recursiva para recorrer el array asociativo

function recorrer($comunidad)
{

foreach(
$comunidad as $indice=>$variable)
{
    if(
is_array($variable))
    {
        
recorrer($variable);
    }else{

        echo 
$indice;
        echo 
$variable;
        echo 
"<br />";
        echo 
"<br />";
    }

}
}
recorrer($comunidad); 
El problema es que me gustaría sacar todos los indices, es decir todas la comunidades del array y todas sus provincias... por ejemplo:, Andalucia=> Almeria, Cádiz, Granada...
Aragón=> Huesca , Teruel.
pero se como lograrlo... si alguien sabe como hacerlo.... muchisimas gracias!!
PD: La función del código funciona pero solo me muestralas provincias y su codigo, es decir:
Almeria 256
Cadiz=>344
Cordoba=>331

[EMAIL="[email protected]"][email protected][/EMAIL]

Última edición por capixi; 26/04/2011 a las 16:51
  #2 (permalink)  
Antiguo 26/04/2011, 17:35
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Array asociativo con foreach

creo que algo como esto te serviria
Código PHP:
Ver original
  1. function recorrer($comunidad,$indice1=''){
  2.     foreach($comunidad as $indice=>$variable){
  3.         if(is_array($variable)){
  4.             recorrer($variable,&$indice);
  5.         }else{
  6.             echo $indice1.'=>';
  7.             echo $indice.'=>';
  8.             echo $variable;
  9.             echo "<br />";
  10.             echo "<br />";
  11.     }
  12. }
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 27/04/2011, 06:50
 
Fecha de Ingreso: abril-2011
Ubicación: Alicante
Mensajes: 52
Antigüedad: 13 años
Puntos: 3
Información Respuesta: Array asociativo con foreach

Gracias Eits por tu ayuda, de todas formas no he conseguido exactamente lo que queria hacer... con este código:

Código PHP:
function recorrer($comunidad)
{
foreach(
$comunidad as $item)
{
    foreach(
$item as $key => $value)
    {
        if(
is_array($key))
                             {
                              
recorrer($value);

                             }else{

                              echo 
$key."=>";
                             }
        echo 
$value// Su valor
        
echo "<br>";
    }

}
}
recorrer($comunidad); 
Me saca esta lista en el navegador:

Almeria=>256
Cadiz=>344
Cordoba=>331
Granada=>388
Huelva=>195
Jaen=>271
Malaga=>385
Sevilla=>460
Huesca=>201
Teruel=>149
Zaragoza=>378
Cantabria=>327
Avila=>173
Burgos=>209
Leon=>279
Palencia=>120
Salamanca=>252
Segovia=>138
Soria=>71
Valladolid=>229
Zamora=>216

A mi también me gustaría sacar que Almeria, Cádiz, Cordoba, Huelva, Jaen, Malaga y Sevilla pertenecen a Andalucia y sigo sin conseguir mostrar las Comunidades...

Gracias a tod@os de nuevo!!

Esto de los arrays asociativos....
  #4 (permalink)  
Antiguo 27/04/2011, 07:53
 
Fecha de Ingreso: abril-2011
Ubicación: Alicante
Mensajes: 52
Antigüedad: 13 años
Puntos: 3
De acuerdo Respuesta: Array asociativo con foreach

A ver me autocontesto y soluciono el tema:

Aqui os dejo el código comentado por si lo necesitais:

Código PHP:
function recorrer($comunidad)
{
 foreach(
$comunidad as $key => $value)
 {
    
// imprimo la comunidad en color rojo
    
echo "<font color='red'>".$key.":</font><br>";
    foreach(
$value as $key2 => $value2)
    {
        
//Si $Key2 es un array devuelve true
        
if(is_array($key2))
        {
              
//recorro sus elementos recursivamente
              
recorrer($value2);
        }else{
              echo 
$key2."=>";//imprimo provincia
        
}
    echo 
$value2;//imprimo código de provincia
    
echo "<br>";
    }
echo 
"<br>";
 }
}
recorrer($comunidad);//llamo a la función 
y aqui os dejo la lista que imprimiria:
Andalucia:
Almeria=>256
Cadiz=>344
Cordoba=>331
Granada=>388
Huelva=>195
Jaen=>271
Malaga=>385
Sevilla=>460

Aragón:
Huesca=>201
Teruel=>149
Zaragoza=>378

Cantabria:
Cantabria=>327

Castilla y León:
Avila=>173
Burgos=>209
Leon=>279
Palencia=>120
Salamanca=>252
Segovia=>138
Soria=>71
Valladolid=>229
Zamora=>216

  #5 (permalink)  
Antiguo 27/04/2011, 07:57
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Array asociativo con foreach

es cuestión de jugar un poco con lo que ya tienes otro ejemplo:
Código PHP:
Ver original
  1. function recorrer($comunidad){
  2.     foreach($comunidad as $indice=>$variable){
  3.         if(is_array($variable)){
  4.             echo $indice.'=>';
  5.             recorrer($variable);
  6.         }else{
  7.             echo $indice.'=>';
  8.             echo $variable;// si no quieres que te muestre los números comenta esta linea
  9.             echo "<br />";
  10.             echo "<br />";
  11.     }
  12. }
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #6 (permalink)  
Antiguo 27/04/2011, 07:58
Avatar de Franz1628  
Fecha de Ingreso: marzo-2007
Ubicación: Lima - Perú
Mensajes: 145
Antigüedad: 17 años, 1 mes
Puntos: 26
Respuesta: Array asociativo con foreach

No es necesario hacer 2 foreach ,
prueba con este código:
Código PHP:
Ver original
  1. <?php
  2. $comunidad= array("Andalucia"=>array("Almeria"=>"256",
  3.                                      "Cadiz"=>"344",
  4.                                      "Cordoba"=>"331",
  5.                                      "Granada"=>"388",
  6.                                      "Huelva"=>"195",
  7.                                      "Jaen"=>"271",
  8.                                      "Malaga"=>"385",
  9.                                      "Sevilla"=>"460"),
  10.                   "Aragón"=>array( "Huesca"=>"201",
  11.                                    "Teruel"=>"149",
  12.                                    "Zaragoza"=>"378"),
  13.                   "Cantabria"=>array("Cantabria"=>"327"),
  14.             "Castilla y León"=>array("Avila"=>"173",
  15.                                      "Burgos"=>"209",
  16.                                      "Leon"=>"279",
  17.                                      "Palencia"=>"120",
  18.                                      "Salamanca"=>"252",
  19.                                      "Segovia"=>"138",
  20.                                      "Soria"=>"71",
  21.                                      "Valladolid"=>"229",
  22.                                      "Zamora"=>"216"));
  23.  
  24. //Funcion recursiva para recorrer el array asociativo
  25.  
  26. function recorrer($comunidad)
  27. {
  28.  
  29. foreach($comunidad as $indice=>$variable)
  30. {
  31.     if(is_array($variable))
  32.     {
  33.         echo "<font color='red'>".$indice."</font><br>";
  34.         recorrer($variable);
  35.     }else{
  36.  
  37.         echo $indice;
  38.         echo $variable;
  39.         echo "<br />";
  40.         echo "<br />";
  41.     }
  42.  
  43. }
  44. }
  45. recorrer($comunidad);  
  46.  
  47. ?>


Espero te sirva
  #7 (permalink)  
Antiguo 27/04/2011, 11:06
 
Fecha de Ingreso: abril-2011
Ubicación: Alicante
Mensajes: 52
Antigüedad: 13 años
Puntos: 3
Mensaje Respuesta: Array asociativo con foreach

Muchas gracias!! Me habeis ayudado mucho con esto de los arrays...

Etiquetas: asociativo, foreach, indices, multidimensional, recorrer, strings
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 16:36.