Autor Tema: arrays multidimensionales PHP con índices asociativos bucles recorrido CU00826B  (Leído 5464 veces)

Elanti

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 30
    • Ver Perfil
Citar
EJERCICIO 3

Supón que quieres representar lo siguiente: hay 2 equipos españoles, en el primero el portero es Frank, el defensa Pepe, el medio Luis y el delantero Raul. En el segundo, el portero es Tiger, el defensa Mourin, el medio Katz y el delantero Alberto. Hay 1 equipo mexicano, donde el portero es Suarez, el defensa Koltz, el medio Fernandez y el delantero Ramirez. Hay 2 equipos argentinos. En el primero el portero es Higuita, el defensa Mel, el medio Rubens y el delantero Messi. En el segundo el portero es Kostenmeiner, el defensa Lenkins, el medio Marash y el delantero Juanes.

a) Representa los datos usando un array de tres dimensiones con índices numéricos donde el primer índice indica el país, el segundo el equipo y el tercero la posición del jugador. Presenta la información del país, equipo, posiciones y jugadores de cada equipo usando un bucle for.

b) Representa los datos usando un array de tres dimensiones con índices numéricos donde el primer índice indica el país, el segundo el equipo y el tercero la posición del jugador. Presenta la información del país, equipo, posiciones y jugadores de cada equipo usando un bucle for each.

c) Representa los datos usando arrays arrays asociativos donde el primer índice indica el país, el segundo el equipo y el tercero la posición del jugador (un ejemplo de cómo declarar un elemento sería por ejemplo: $equipos['Mexico']['Equipo1']['defensa']="koltz";). A continuación usando un bucle foreach recorre los elementos del array mostrando la información del país, equipo, posiciones y jugadores de cada equipo.

Este ejercicio me resultó extremadamente difícil. Apoyándome en respuestas de otras personas en este foro, logré resolverlo; pero mi solución para la parte "a" sólo funciona parcialmente, debido a que México tiene un solo equipo, y esto hace que mi bucle "for" no funcione del todo bien. Si alguien tiene alguna idea para resolverlo, se agradece. Yo me voy a poner mis neuronas en salmuera.

Solución parte "a":

Código: [Seleccionar]
<?php 
$jugadores
[0][0][0]="Frank";
$jugadores[0][0][1]="Pepe";
$jugadores[0][0][2]="Luis";
$jugadores[0][0][3]="Raúl";
$jugadores[0][1][0]="Tiger";
$jugadores[0][1][1]="Mourin";
$jugadores[0][1][2]="Katz";
$jugadores[0][1][3]="Alberto";
$jugadores[1][0][0]="Suárez";
$jugadores[1][0][1]="Koltz";
$jugadores[1][0][2]="Fernández";
$jugadores[1][0][3]="Ramírez";
$jugadores[2][0][0]="Higuita";
$jugadores[2][0][1]="Mel";
$jugadores[2][0][2]="Rubens";
$jugadores[2][0][3]="Messi";
$jugadores[2][1][0]="Kostenmeiner";
$jugadores[2][1][1]="Lenkins";
$jugadores[2][1][2]="Marash";
$jugadores[2][1][3]="Juanes";

$paises = array("España""México","Argentina",);
$equipos = array ("primero""segundo",);
$posiciones = array("portero""defensa""medio""delantero");
for (
$pai=0;$pai<count($jugadores);$pai++){ 
echo 
"<strong> Los jugadores de $paises[$pai] son: </strong><br /><br />";    
    for (
$equi=0;$equi<count($equipos);$equi++){           
    echo 
"&nbsp; En el equipo $equipos[$equi]: <br/>";       
        for (
$posi=0;$posi<count($posiciones);$posi++){
        echo 
"<ul>";    
        echo 
"<li> En la posición $posiciones[$posi]: </li>";
        echo 
"&nbsp;&nbsp;&nbsp;&nbsp;",$jugadores[$pai][$equi][$posi], "<br />";        
        echo 
"</ul>";
        }
    }
}    
?>

Solución parte "b":

Código: [Seleccionar]
<?php 
$jugadores
[0][0][0]="Frank";
$jugadores[0][0][1]="Pepe";
$jugadores[0][0][2]="Luis";
$jugadores[0][0][3]="Raúl";
$jugadores[0][1][0]="Tiger";
$jugadores[0][1][1]="Mourin";
$jugadores[0][1][2]="Katz";
$jugadores[0][1][3]="Alberto";
$jugadores[1][0][0]="Suárez";
$jugadores[1][0][1]="Koltz";
$jugadores[1][0][2]="Fernández";
$jugadores[1][0][3]="Ramírez";
$jugadores[2][0][0]="Higuita";
$jugadores[2][0][1]="Mel";
$jugadores[2][0][2]="Rubens";
$jugadores[2][0][3]="Messi";
$jugadores[2][1][0]="Kostenmeiner";
$jugadores[2][1][1]="Lenkins";
$jugadores[2][1][2]="Marash";
$jugadores[2][1][3]="Juanes";


foreach (
$jugadores as $paises=>$pais){
    echo 
"<strong>";
    if (
$paises==0){echo "España <br />";}
    else if (
$paises==1){echo "México <br />";}
    else if (
$paises==2){echo "Argentina <br />";}
    echo 
"</strong>";
    foreach (
$pais as $equipos => $equipo){
        if (
$equipos == 0){echo "&nbsp; &nbsp; Primer equipo: <br />";}
        else {echo 
"&nbsp; &nbsp; Segundo equipo: <br />";}
        foreach (
$equipo as $posicion => $jugador){
            echo 
"<ul>";
            if (
$posicion==0){echo "<li>","Portero:"$jugador"</li>";}
            else if (
$posicion==1){echo "<li>","Defensa:"$jugador"</li>";}
            else if (
$posicion==2){echo "<li>","Medio:"$jugador"</li>";}
            else if (
$posicion==3){echo "<li>","Delantero:"$jugador"</li>";}
            echo 
"</ul>";
        }
    }
}
    
?>

Solución parte "c":

Código: [Seleccionar]
<?php 
$jugadores
["España"]["primero"]["portero"]="Frank";
$jugadores["España"]["primero"]["defensa"]="Pepe";
$jugadores["España"]["primero"]["medio"]="Luis";
$jugadores["España"]["primero"]["delantero"]="Raúl";
$jugadores["España"]["segundo"]["portero"]="Tiger";
$jugadores["España"]["segundo"]["defensa"]="Mourin";
$jugadores["España"]["segundo"]["medio"]="Katz";
$jugadores["España"]["segundo"]["delantero"]="Alberto";
$jugadores["México"]["primero"]["portero"]="Suárez";
$jugadores["México"]["primero"]["defensa"]="Koltz";
$jugadores["México"]["primero"]["medio"]="Fernández";
$jugadores["México"]["primero"]["delantero"]="Ramírez";
$jugadores["Argentina"]["primero"]["portero"]="Higuita";
$jugadores["Argentina"]["primero"]["defensa"]="Mel";
$jugadores["Argentina"]["primero"]["medio"]="Rubens";
$jugadores["Argentina"]["primero"]["delantero"]="Messi";
$jugadores["Argentina"]["segundo"]["portero"]="Kostenmeiner";
$jugadores["Argentina"]["segundo"]["defensa"]="Lenkins";
$jugadores["Argentina"]["segundo"]["medio"]="Marash";
$jugadores["Argentina"]["segundo"]["delantero"]="Juanes";

foreach (
$jugadores as $pais => $equipos){
    foreach (
$equipos as $equipo => $posiciones){
        foreach (
$posiciones as $posicion => $jugador){
            echo 
"En $pais, en el equipo $equipo, el $posicion titular es: $jugador <br /> ";
        }
    }
}
?>
« Última modificación: 06 de Septiembre 2015, 17:58 por César Krall »

GonzaH

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 30
  • SMFPersonal
    • Ver Perfil
    • SMFPersonal
Re:Ejercicio php CU00826B bucles en arrays multidimensionales
« Respuesta #1 en: 04 de Septiembre 2015, 06:35 »
Hola Elanti, esto si que fue un quebradero de cabeza puff  :o :o

Lo realize de esta manera

Código: [Seleccionar]
<?php 
//Equipo España
$jugadores[0][0][0]="Frank";
$jugadores[0][0][1]="Pepe";
$jugadores[0][0][2]="Luis";
$jugadores[0][0][3]="Raúl";

$jugadores[0][1][0]="Tiger";
$jugadores[0][1][1]="Mourin";
$jugadores[0][1][2]="Katz";
$jugadores[0][1][3]="Alberto";

//Equipo Mexico
$jugadores[1][0][0]="Suárez";
$jugadores[1][0][1]="Koltz";
$jugadores[1][0][2]="Fernández";
$jugadores[1][0][3]="Ramírez";

//Equipo Argentina
$jugadores[2][0][0]="Higuita";
$jugadores[2][0][1]="Mel";
$jugadores[2][0][2]="Rubens";
$jugadores[2][0][3]="Messi";

$jugadores[2][1][0]="Kostenmeiner";
$jugadores[2][1][1]="Lenkins";
$jugadores[2][1][2]="Marash";
$jugadores[2][1][3]="Juanes";




$paises = array("España""Mexico""Argentina");
$posicion = array("Portero""Defensa""Medio""Delantero");
$equipo = array("Equipo Titular""Equipo Suplente");


for(
$i 0$i count($jugadores); $i++) {
   
   for(
$j 0$j count($jugadores[$i]); $j++) {
     echo 
'<strong>Los jugadores de '.$paises[$i]." son:</strong><br />";
      echo 
$equipo[$j];
      echo 
"<ul>";
      
      for(
$k 0$k count($jugadores[$i][$j]); $k++) {
         echo 
"<li>".$posicion[$k].": ".$jugadores[$i][$j][$k]."</li>";
      }
      
      echo 
"</ul>";
   }
}
?>

Presta atención de como lo posicione en la matriz a los jugadores del equipo de mexico. Entonces cuando el bucle  este en for($i = 1; $i < count($jugadores); $i++) count($jugadores) me va  a retornar 3 por que hay 0,1,2.

Entonces cuando entramos a este bucle for($j = 0; $j < count($jugadores[$i]); $j++) count($jugadores[1]); va a retornarme  1 asi que el bucle dara una sola vuelta, despues entra a este  for($k = 0; $k < count($jugadores[$i][$j]); $k++) que count($jugadores[1][0]); me va retornar 4, entonces el bucle me dara cuatro vuelta contando desde 0 hasta 3.

Te pido disculpa por la explicación no es muy buena pero espero que te sirva de ayuda y puedas analizar y resolver el problema.

¡Saludos!

Elanti

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 30
    • Ver Perfil
Re:Ejercicio php CU00826B bucles en arrays multidimensionales
« Respuesta #2 en: 04 de Septiembre 2015, 13:04 »
¡Perfecto, GonzaH!
Me quedó clarísima tu solución. Viéndolo ya solucionado, parece fácil… pero cuando yo lo intenté, me perdí completamente entre los bucles (y todavía, si me distraigo un segundo, me pierdo). Supongo que será cuestión de seguir practicando, y algún día me va a resultar más fácil.
Saludos.

RUSO GD

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Gracias a ambos por su tiempo y las molestias...   Son lo máximo...   Un abrazo inmeso...

 

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".