Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Lorenzo31 en 21 de Febrero 2016, 12:05

Título: PHP recorrer un array asociativo con bucle for no funciona usar foreach CU00826B
Publicado por: Lorenzo31 en 21 de Febrero 2016, 12:05
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';
}
}
}

?>

     

Título: Re:PHP recorrer un array asociativo con bucle for no funciona usar foreach CU00826B
Publicado por: Mario R. Rancel en 23 de Febrero 2016, 14:06
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