Autor Tema: PHP recorrer un array asociativo con bucle for no funciona usar foreach CU00826B  (Leído 4004 veces)

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Por alguna razón que no logro entender, solo me accede al primer bucle for. Alguien podría iluminarme sobre que hago mal, quizá sea en la declaración de la tabla, hoy no estoy muy lúcido :)

Gracias de antemano.

Código: [Seleccionar]
<?php
/*EJERCICIO 3*/
$tablaJugadores['España']['Equipo1']['portero']='Frank';
$tablaJugadores['España']['Equipo1']['defensa']='Pepe';
$tablaJugadores['España']['Equipo1']['medio']='Luis';
$tablaJugadores['España']['Equipo1']['delantero']='Raul';
$tablaJugadores['España']['Equipo2']['portero']='Tiger';
$tablaJugadores['España']['Equipo2']['defensa']='Mourin';
$tablaJugadores['España']['Equipo2']['medio']='Katz';
$tablaJugadores['España']['Equipo2']['delantero']='Alberto';
$tablaJugadores['Mexico']['Equipo1']['portero']='Suarez';
$tablaJugadores['Mexico']['Equipo1']['defensa']='Koltz';
$tablaJugadores['Mexico']['Equipo1']['medio']='Fernandez';
$tablaJugadores['Mexico']['Equipo1']['delantero']='Ramirez';
$tablaJugadores['Argentina']['Equipo1']['portero']='Higuita';
$tablaJugadores['Argentina']['Equipo1']['defensa']='Mel';
$tablaJugadores['Argentina']['Equipo1']['medio']='Rubens';
$tablaJugadores['Argentina']['Equipo1']['delantero']='Messi';
$tablaJugadores['Argentina']['Equipo2']['portero']='Kostenmeiner';
$tablaJugadores['Argentina']['Equipo2']['defensa']='Lenkins';
$tablaJugadores['Argentina']['Equipo2']['medio']='Marash';
$tablaJugadores['Argentina']['Equipo2']['delantero']='Juanes';

for($x=0$x<count($tablaJugadores); $x++){
echo 'HOLA1';
//echo implode(' ', tablaJugadores[$x]);
for($i=0$i<count($tablaJugadores[$x]); $i++){
echo 'HOLA2';
//echo implode(' ', tablaJugadores[$x][$i]);
for($j=0$j<count($tablaJugadores[$x][$i]); $j++){
//echo implode(' ', tablaJugadores[$x][$i][$j]);
echo $tablaJugadores[$x][$i][$j].'<br/> HOLA3';
}
}
}

?>

     

« Última modificación: 23 de Febrero 2016, 14:05 por Mario R. Rancel »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Buenos días si hacemos echo 'HOLA1 tenemos '.count($tablaJugadores[$x]).'<br/>';

Comprobamos que nos devuelve HOLA1 tenemos 0, es decir, no te está devolviendo lo que tú esperas que te devuelva.

El motivo es que aunque podríamos esperar que los índices funcionaran, siguiendo el orden de declaración, php no considera esta opción como válida. Para recorrer un array asociativo debes usar un bucle foreach, ver https://www.aprenderaprogramar.com/foros/index.php?topic=1350.0

Para tratar de asimilar esto podemos considerar que los arrays asociativos en php son considerados conjuntos de elementos clave-valor no ordenados, es decir,

$jugador['delantero']['manchester'] no tendría ningún orden frente a $jugador['defensa']['chelsea']

php no sabe cómo ordenar y trabaja con estos elementos como sin orden intrínseco, al contrario que los arrays numéricos donde el orden viene determinado por el valor de los índices

En resumen: con arrays asociativos hay que usar foreach

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".