Autor Tema: Curso PHP arrays multidimensionales recorrer con bucles for entrega CU00826B  (Leído 13502 veces)

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
He copiado este ejemplo para ver cómo recorrer arrays multidimensionales en PHP:

Código: [Seleccionar]
<?php //Ejemplo arrays aprenderaprogramar.com
$array[0][0] = "Uno";
$array[0][1] = "Dos";
$array[1][0] = "Tres";
$array[1][1] = "Cuatro";
for(
$i=0;$i<count($array);$i++) {
for($j=0;$j<count($array[$i]);$j++) {
echo $array[$i][$j].'<br />';
}
}
echo 
"--------------------";
$array2[0][0][0] = "Cinco";
$array2[0][0][1] = "Seis";
$array2[0][0][2] = "Siete";
$array2[0][1][0] = "Ocho";
$array2[0][1][1] = "Nueve";
for(
$i=0;$i<count($array);$i++) {
for($j=0;$j<count($array[$i]);$j++) {
for($k=0;$k<count($array[$i][$j]);$k++) {
echo $array[$i][$j][$k].'<br />';
}
}
}

Se supone que tiene que salir esto:

 pero a mi me sale esto:

Uno
Dos
Tres
Cuatro
--------------------U
D
T
C

La cosa es que estoy revisando el código, y no lo veo mal...
¿Que esta pasando?
Muchas gracias
« Última modificación: 16 de Febrero 2016, 08:29 por Alex Rodríguez »

dongo

  • Intermedio
  • ***
  • Mensajes: 177
    • Ver Perfil
Re:Duda en curso PHP entrega CU00826B
« Respuesta #1 en: 22 de Septiembre 2014, 19:06 »
Hola, creo que tu problema es esta linea:

Código: [Seleccionar]
echo $array[$i][$j][$k].'<br />';

debería ser:

Código: [Seleccionar]
echo $array2[$i][$j][$k].'<br />';

Ya que el array de 3 dimensiones se llama $array2 y no $array como tu tienes. Bueno ya nos cuentas, Un saludo.

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Duda en curso PHP entrega CU00826B
« Respuesta #2 en: 22 de Septiembre 2014, 19:16 »
Era eso dongo! gracias! :)

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Duda en curso PHP entrega CU00826B
« Respuesta #3 en: 22 de Septiembre 2014, 20:31 »
Tengo otra pregunta, esta vez sobre el el ejercicio 3 de esta misma entrega. El enunciado es:
upó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.

Bien lo que no se exactamente es como hacer que se presente la información del país, equipo y posiciones, solo los jugadores. Este es mi codigo por ahora:
Código: [Seleccionar]
<html>
<head><title>Ejemplo aprenderaprogramar.com</title></head>
<body>
<?php //Ejemplo foreach aprenderaprogramar.com
//Primer equipo español
$jugador[0][0][0] = "Frank"; //Portero
$jugador[0][0][1] = "Pepe"; //Defensa
$jugador[0][0][2] = "Luis"; //Medio
$jugador[0][1][0] = "Raul"; //Delantero
//Segundo equipo español
$jugador[0][1][1] = "Tiger"; //Portero
$jugador[0][1][2] = "Mourin"; //Defensa
$jugador[0][2][0] = "Katz"; //Medio
$jugador[0][2][1] = "Alberto"; //Delantero
//Equipo Mexicano
$jugador[0][2][2] = "Suarez"; //Portero
$jugador[1][0][0] = "Koltz"; //Defensa
$jugador[1][0][1] = "Fernandez"; //Medio
$jugador[1][0][2] = "Ramirez"; //Delantero
//Primer equipo argentino
$jugador[1][1][0] = "Higuita"; //Portero
$jugador[1][1][1] = "Mel"; //Defensa
$jugador[1][1][2] = "Rubens"; //Medio
$jugador[1][2][0] = "Messi"; //Delantero
//Segundo equipo argentino
$jugador[1][2][1] = "Kostenmeiner"; //Portero
$jugador[1][2][2] = "Lenkins"; //Defensa
$jugador[2][0][0] = "Marash"; //Medio
$jugador[2][0][1] = "Juanes"; //Delantero
//En blanco
$jugador[2][0][2] = "";
$jugador[2][1][0] = "";
$jugador[2][1][1] = "";
$jugador[2][1][2] = "";
$jugador[2][2][0] = "";
$jugador[2][2][1] = "";
$jugador[2][2][2] = "";
for($i=0;$i<count($jugador);$i++) {
for($j=0;$j<count($jugador[$i]);$j++) {
for($k=0;$k<count($jugador[$i][$j]);$k++) {
echo $jugador[$i][$j][$k].'<br />';
}
}
}
?>

</body>
</html>

y lo que muestra es esto:
Frank
Pepe
Luis
Raul
Tiger
Mourin
Katz
Alberto
Suarez
Koltz
Fernandez
Ramirez
Higuita
Mel
Rubens
Messi
Kostenmeiner
Lenkins
Marash
Juanes

Lo único que se me ocurre es modificar el código de la siguiente forma, pero no se si es esto lo que se pretende:
Código: [Seleccionar]
<html>
<head><title>Ejemplo aprenderaprogramar.com</title></head>
<body>
<?php //Ejemplo foreach aprenderaprogramar.com
//Primer equipo español
$jugador[0][0][0] = "Primer equipo español, portero: Frank"; //Portero
$jugador[0][0][1] = "Primer equipo español, defensa: Pepe"; //Defensa
$jugador[0][0][2] = "Primer equipo español, medio: Luis"; //Medio
$jugador[0][1][0] = "Primer equipo español, delantero: Raul"; //Delantero
//Segundo equipo español
$jugador[0][1][1] = "Segundo equipo español, defensa: Tiger"; //Portero
$jugador[0][1][2] = "Segundo equipo español, defensa: Mourin"; //Defensa
$jugador[0][2][0] = "Segundo equipo español, medio: Katz"; //Medio
$jugador[0][2][1] = "Segundo equipo español, delantero: Alberto"; //Delantero
//Equipo Mexicano
$jugador[0][2][2] = "Primer equipo mexicano, defensa: Suarez"; //Portero
$jugador[1][0][0] = "Primer equipo mexicano, defensa: Koltz"; //Defensa
$jugador[1][0][1] = "Primer equipo mexicano, medio: Fernandez"; //Medio
$jugador[1][0][2] = "Primer equipo mexicano, delantero: Ramirez"; //Delantero
//Primer equipo argentino
$jugador[1][1][0] = "Primer equipo argentino, defensa: Higuita"; //Portero
$jugador[1][1][1] = "Primer equipo argentino, defensa: Mel"; //Defensa
$jugador[1][1][2] = "Primer equipo argentino, medio: Rubens"; //Medio
$jugador[1][2][0] = "Primer equipo argentino, delantero: Messi"; //Delantero
//Segundo equipo argentino
$jugador[1][2][1] = "Segundo equipo argentino, defensa: Kostenmeiner"; //Portero
$jugador[1][2][2] = "Segundo equipo argentino, defensa: Lenkins"; //Defensa
$jugador[2][0][0] = "Segundo equipo argentino, medio: Marash"; //Medio
$jugador[2][0][1] = "Segundo equipo argentino, delantero: Juanes"; //Delantero
//En blanco
$jugador[2][0][2] = "";
$jugador[2][1][0] = "";
$jugador[2][1][1] = "";
$jugador[2][1][2] = "";
$jugador[2][2][0] = "";
$jugador[2][2][1] = "";
$jugador[2][2][2] = "";
for($i=0;$i<count($jugador);$i++) {
for($j=0;$j<count($jugador[$i]);$j++) {
for($k=0;$k<count($jugador[$i][$j]);$k++) {
echo $jugador[$i][$j][$k].'<br />';
}
}
}
?>

</body>
</html>


Tambien me he puesto con el apartado b, que dice:

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.

Pero no se me ocurre como modificar el código anterior...
Muchas gracias por lo ayuda!
« Última modificación: 22 de Septiembre 2014, 20:41 por erniker »

dongo

  • Intermedio
  • ***
  • Mensajes: 177
    • Ver Perfil
Re:Duda en curso PHP entrega CU00826B
« Respuesta #4 en: 22 de Septiembre 2014, 21:10 »
Pues debería ser algo como esto:

Código: [Seleccionar]
<?php
//equipo español, equipo 1, posicion_jugador =
$equipos[0][0][0]="Frank";
$equipos[0][0][1]="Pepe";
$equipos[0][0][2]="Luis";
$equipos[0][0][3]="Raul";
//equipo español, equipo 2, posicion_jugador =
$equipos[0][1][0]="Tiger";
$equipos[0][1][1]="Mourin";
$equipos[0][1][2]="Katz";
$equipos[0][1][3]="Alberto";
//equipo mexico, equipo 1, posicion_jugador =
$equipos[1][0][0]="Suarez";
$equipos[1][0][1]="koltz";
$equipos[1][0][2]="Fernandez";
$equipos[1][0][3]="Ramirez";
//equipo argentino, equipo 1, posicion_jugador =
$equipos[2][0][0]="Higuita";
$equipos[2][0][1]="Mel";
$equipos[2][0][2]="Rubens";
$equipos[2][0][3]="Messi";
//equipo argentino, equipo 2, posicion_jugador =
$equipos[2][1][0]="Kostenmeiner";
$equipos[2][1][1]="Lenkins";
$equipos[2][1][2]="Marash";
$equipos[2][1][3]="Juanes";
for(
$i=0;$i<count($equipos);$i++){
//pais del equipo
if($i==0){
echo "<h1>Equipo Español:</h1><br>";
}
else if($i==1){
echo "<h1>Equipo Mexicano:</h1><br>";
}
else{
echo "<h1>Equipo Argentino:</h1><br>";
}
for($j=0;$j<count($equipos[$i]);$j++){
//numero de equipo
echo "Equipo $j: <br>";
for($k=0;$k<count($equipos[$i][$j]);$k++){
//Dependiendo del numero en la tercera posicion el jugador tendra una posicion o otra.
if($k==0){
echo "Portero:"$equipos[$i][$j][$k]." <br>";
}
else if($k==1){
echo "Defensa:".$equipos[$i][$j][$k]."<br>";
}
else if($k==2){
echo "Medio:".$equipos[$i][$j][$k]."<br>";
}
else if($k==3){
echo "Delantero:"$equipos[$i][$j][$k]."<br>";
}
}
}
}

Nota: No lo he probado porque no tengo el servidor activo ahora...pero al menos ahi llevas la idea. Un saludo!
« Última modificación: 22 de Septiembre 2014, 21:26 por dongo »

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Duda en curso PHP arrays multidimensionales entrega CU00826B
« Respuesta #5 en: 23 de Septiembre 2014, 18:04 »
Gracias dongo, ahora me pongo con el y te digo como va la cosa!

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Duda en curso PHP arrays multidimensionales entrega CU00826B
« Respuesta #6 en: 23 de Septiembre 2014, 18:13 »
Va de lujo dongo, ahora me pongo a estudiar el codigo a ver si lo entiendo bien

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Duda en curso PHP arrays multidimensionales entrega CU00826B
« Respuesta #7 en: 23 de Septiembre 2014, 19:21 »
Joder como se complica esto... me siento un inutil...
En este mismo ejercicio, el apartado b dice lo siguiente:

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.

Pero ¿como se manejan los array multidimensionales con foreach??

Si me estoy atascando ya y solo voy por la entrga 26, lo llevo claro..
En fin, muchas gracias por la ayuda

dongo

  • Intermedio
  • ***
  • Mensajes: 177
    • Ver Perfil
Re:Duda en curso PHP arrays multidimensionales entrega CU00826B
« Respuesta #8 en: 23 de Septiembre 2014, 20:43 »
Hay llevas el ejercicio con bucles foreach. Es normal que te atranques, a todos al principio nos ocurre, simplemente se trata de darle al coco y hacer muchos ejercicios... empezar por cosas simples y ir complicándolo, en fin, échale un ojo a los bucles y fíjate en que las "$claves" son los indices y los "$valores" es, lo que hay en esa posición del array.

si estamos en el primer o segundo bucle, $valor lo que contiene dentro es un array, por eso lo usamos en el siguiente bucle como variable de array.

y si estamos en el tercer bucle, que es el ultimo, lo que contiene $valor es el contenido del array, en este caso cada uno de los nombres de los jugadores, y es este $valor el que mostramos por pantalla.

Nada, dale unas vueltas y intenta entenderlo, haz mas ejercicios similares, y si sigues con duda nos cuentas.

Un saludo.

Código: [Seleccionar]
<?php
//equipo español, equipo 1, posicion_jugador =
$equipos[0][0][0]="Frank";
$equipos[0][0][1]="Pepe";
$equipos[0][0][2]="Luis";
$equipos[0][0][3]="Raul";
//equipo español, equipo 2, posicion_jugador =
$equipos[0][1][0]="Tiger";
$equipos[0][1][1]="Mourin";
$equipos[0][1][2]="Katz";
$equipos[0][1][3]="Alberto";
//equipo mexico, equipo 1, posicion_jugador =
$equipos[1][0][0]="Suarez";
$equipos[1][0][1]="koltz";
$equipos[1][0][2]="Fernandez";
$equipos[1][0][3]="Ramirez";
//equipo argentino, equipo 1, posicion_jugador =
$equipos[2][0][0]="Higuita";
$equipos[2][0][1]="Mel";
$equipos[2][0][2]="Rubens";
$equipos[2][0][3]="Messi";
//equipo argentino, equipo 2, posicion_jugador =
$equipos[2][1][0]="Kostenmeiner";
$equipos[2][1][1]="Lenkins";
$equipos[2][1][2]="Marash";
$equipos[2][1][3]="Juanes";
foreach (
$equipos as $clave => $valor){

//pais del equipo
if($clave==0){
echo "Equipo Español:<br>";
}
else if($clave==1){
echo "Equipo Mexicano:<br>";
}
else{
echo "Equipo Argentino:<br>";
}
foreach ($valor as $clave2 => $valor2){

//numero de equipo
echo "Equipo $clave2: <br>";
foreach ($valor2 as $clave3 => $valor3){

//Dependiendo del numero en la tercera posicion el jugador tendra una posicion o otra.
if($clave3==0){
echo "Portero:"$valor3." <br>";
}
else if($clave3==1){
echo "Defensa:".$valor3."<br>";
}
else if($clave3==2){
echo "Medio:".$valor3."<br>";
}
else if($clave3==3){
echo "Delantero:".$valor3."<br>";
}
}
}
}

?>


erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Duda en curso PHP arrays multidimensionales entrega CU00826B
« Respuesta #9 en: 24 de Septiembre 2014, 17:45 »
Muchas gracias dongo.
La verdad es que no me entero muy bien como funciona estos bucles foreach.... Solo intuyo lo que hace, pero seria incapaz de acerlo :S

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Duda en curso PHP arrays multidimensionales entrega CU00826B
« Respuesta #10 en: 24 de Septiembre 2014, 18:17 »
Esto ya es absurdo... el apartado c y d piden esto:
c) Haz lo que se pide en el apartado a) pero usando arrays asociativos en lugar de con índices numéricos.

d) Haz lo que se pide en el apartado d) pero usando arrays asociativos en lugar de con índices numéricos.


¿como recorro los indices si en vez de números pongo nombres?

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Duda en curso PHP arrays multidimensionales entrega CU00826B
« Respuesta #11 en: 24 de Septiembre 2014, 18:29 »
Hola, al menos en el apartado d) parece que hay una errata, puesto que no puede ser "d) Haz lo que se pide en el apartado d)..."

De cualquier forma, voy a revisar los apartados c) y d) por si estuvieran mal planteados y cuando haya concluido la revisión pegaré aquí las conclusiones.

Saludos

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Duda en curso PHP arrays multidimensionales entrega CU00826B
« Respuesta #12 en: 24 de Septiembre 2014, 18:45 »
supuse que el apartado c d se refieren a repetir el a y el b pero con indices asociativos...

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Duda en curso PHP arrays multidimensionales entrega CU00826B
« Respuesta #13 en: 24 de Septiembre 2014, 19:26 »
Después de consultarlo y con vistas a simplificar el ejercicio, lo hemos modificado quedando después de los apartados a) y b) un único apartado que dice lo siguiente:

c) Declara los arrays como arrays asociativos (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.

A continuación dejo el código de una posible solución (aunque lo interesante no es ver este código, sino intentar hacerlo uno mismo para comprobar si se puede resolver o si surgen dudas):

Código: [Seleccionar]
<html>
<head>
<meta charset ="utf-8" />
</head>
<body>
<?php
//equipo español, equipo 1, posicion_jugador =
$equipos['Spain']['Equipo1']['portero']="Frank";
$equipos['Spain']['Equipo1']['defensa']="Pepe";
$equipos['Spain']['Equipo1']['medio']="Luis";
$equipos['Spain']['Equipo1']['delantero']="Raul";
//equipo español, equipo 2, posicion_jugador =
$equipos['Spain']['Equipo2']['portero']="Tiger";
$equipos['Spain']['Equipo2']['defensa']="Mourin";
$equipos['Spain']['Equipo2']['medio']="Katz";
$equipos['Spain']['Equipo2']['delantero']="Alberto";
//equipo Mexico, equipo 1, posicion_jugador =
$equipos['Mexico']['Equipo1']['portero']="Suarez";
$equipos['Mexico']['Equipo1']['defensa']="koltz";
$equipos['Mexico']['Equipo1']['medio']="Fernandez";
$equipos['Mexico']['Equipo1']['delantero']="Ramirez";
//equipo argentino, equipo 1, posicion_jugador =
$equipos['Argentina']['Equipo1']['portero']="Higuita";
$equipos['Argentina']['Equipo1']['defensa']="Mel";
$equipos['Argentina']['Equipo1']['medio']="Rubens";
$equipos['Argentina']['Equipo1']['delantero']="Messi";
//equipo argentino, equipo 2, posicion_jugador =
$equipos['Argentina']['Equipo2']['portero']="Kostenmeiner";
$equipos['Argentina']['Equipo2']['defensa']="Lenkins";
$equipos['Argentina']['Equipo2']['medio']="Marash";
$equipos['Argentina']['Equipo2']['delantero']="Juanes";

foreach (
$equipos as $clave => $valor){

//pais del equipo
if($clave=='Spain'){
echo "<br/><br/>Equipos del país: España.<br/>";
}
else if($clave=='Mexico'){
echo "<br/><br/>Equipos del país: México.<br/>";
}
else{
echo "<br/><br/>Equipos del país: Argentina.<br/>";
}
foreach ($valor as $clave2 => $valor2){
//numero de equipo
echo "<br/>Equipo $clave2:<br/> ";
foreach ($valor2 as $clave3 => $valor3){
//Dependiendo del numero en la tercera posicion el jugador tendra una posicion o otra.
if($clave3=='portero'){
echo "Portero:"$valor3." <br/>";
}
else if($clave3=='defensa'){
echo "Defensa:".$valor3."<br/>";
}
else if($clave3=='medio'){
echo "Medio:".$valor3."<br/>";
}
else if($clave3=='delantero'){
echo "Delantero:".$valor3."<br/>";
}
}
}
}
?>

</body>
</html>

Si te fijas todo se basa en el uso de índices de tipo asociativo y variables.

Lo interesante de estos ejercicios es comprender la lógica de los arrays y su recorrido.

Si te cuesta entender alguno de estos códigos, revisa el texto del curso y trata de ponerte ejercicios que tengan cierta similitud tú mismo y tratar de resolverlos. Sólo cuando seas capaz de resolverlos por tí mismo podrás decir que has asimilado los conceptos.

Saludos!

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Duda en curso PHP arrays multidimensionales entrega CU00826B
« Respuesta #14 en: 24 de Septiembre 2014, 19:31 »
Por cierto, que el código anterior es un reciclaje del planteado por dongo, gracias dongo ;)

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Duda en curso PHP arrays multidimensionales entrega CU00826B
« Respuesta #15 en: 25 de Septiembre 2014, 13:38 »
Muchas gracias Alex Rodriguez y dongo, creo que ya lo he ido pillando... aunque la verdad es que creo aue mas adelante volveré a releer todo esto porque no se si termino de asimilar completamente el funcionamiento del manejo de los array con foreach.

Jonathan Ramos

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Re:Duda en curso PHP arrays multidimensionales entrega CU00826B
« Respuesta #16 en: 14 de Febrero 2016, 13:21 »
Esto ya es absurdo... el apartado c y d piden esto:
c) Haz lo que se pide en el apartado a) pero usando arrays asociativos en lugar de con índices numéricos.

d) Haz lo que se pide en el apartado d) pero usando arrays asociativos en lugar de con índices numéricos.


¿como recorro los indices si en vez de números pongo nombres?

Hola, yo estaba atascado en el inciso C de la misma entrega numero 26 del tutorial de php. Entre al foro porque no encontraba como solucionarlo y en fin tampoco encontre aqui la respuesta. Pero por fin despues de leer la definicion en php.net de foreach y darle a prueba y error logre entender como anidar los foreach para leer los arreglos multidimensionales asociados, aqui te dejo el codigo que me funciono, para alguien igual que ande perdido, es diferente al que han declarado, y creo mas simplificado.

Código: [Seleccionar]
<?php

// foreach (array_expression as $value)
//     statement
// foreach (array_expression as $key => $value)
//      statement
//
// La primera forma cicla (repite) por el arreglo dado por array_expression. En cada iteracion, el
// valor del elemento actual es asignado a $value y el puntero indice del arreglo avanza uno.
// La segunda forma adicionalmente asigna el puntero indice del elemento actual a $key en cada
// iteracion.

$equipos = array(
'Espana' => array(
'Equipo 1'=>array(portero=>'Frank',defensa=>'Pepe',medio=>'Luis',delantero=>'Raul'),
'Equipo 2'=>array(portero=>'Tiger',defensa=>'Mourin',medio=>'Katz',delantero=>'Alberto')
), //fin espana
'Mexico' => array(
'Equipo 1'=>array(portero=>'Suarez',defensa=>'Koltz',medio=>'Fernandez',delantero=>'Ramirez')
), // fin mexico
'Argentina' => array(
'Equipo 1'=>array(portero=>'Higuita'defensa=>'Mel'medio=>'Rubens',delantero=>'Messi'),
'Equipo 2'=>array(portero=>'Kostgenmeiner'defensa=>'Lenkins'medio=>'Marash'delantero=>'Juanes')
//fin argentina

);
// fin equipos


foreach ($equipos as $pais => $arrayPais){ // Requerimos el indice asociado al actual valor del array del pais
echo "Pais: ".$pais." <br/>";
//Se llama al arreglo arrayPais que contiene los datos
foreach ($arrayPais as $numero => $arrayNumero){ // Requerimos el indice asociado al actual valor del array del numero de equipo
echo "-------".$numero." = ";
// Requerimos al arreglo de elementos del equipo numero i $arrayNumero
foreach ($arrayNumero as $posicion=>$jugador){ // Requerimos los datos de posicion y jugador (indice y valor)
echo "El ".$posicion." es ".$jugador.". ";
}
echo "<br/>";
}
echo "<br/>";
}

?>

mndela

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Hola muy buenas, aquí os dejo mi código, tal como yo lo he escrito, es igual que las soluciones de arriba, pero creo que con un código más limpio y escueto:

Código: [Seleccionar]
<?php
echo "PRIMERA VUELTA CON FOR <br />";
$jugador [0][0][0]=Frank;
$jugador [0][0][1]=Pepe;
$jugador [0][0][2]=Luis;
$jugador [0][0][3]=Raul;
$jugador [0][1][0]=Tiger;
$jugador [0][1][1]=Mourin;
$jugador [0][1][2]=Katz;
$jugador [0][1][3]=Alberto;
$jugador [1][0][0]=Suarez;
$jugador [1][0][1]=Koltz;
$jugador [1][0][2]=Fernandez;
$jugador [1][0][3]=Ramirez;
$jugador [2][0][0]=Higuita;
$jugador [2][0][1]=Mel;
$jugador [2][0][2]=Rubens;
$jugador [2][0][3]=Messi;
$jugador [2][1][0]=Kostenmeiner;
$jugador [2][1][1]=Lenkins;
$jugador [2][1][2]=Marash;
$jugador [2][1][3]=Juanes;
for (
$pais=0;$pais<count($jugador);$pais++){
for ($equipo=0;$equipo<count($jugador[$pais]);$equipo++){
for ($posicion=0;$posicion<count($jugador[$pais][$equipo]);$posicion++){
echo $jugador[$pais][$equipo][$posicion].'<br />';
}
}
}
echo 
"-_-_-_-_-.<br />";
echo 
"SEGUNDA VUELTA CON FOREACH <br />";
foreach (
$jugador as $prueba){
foreach ($prueba as $prueba2){
foreach ($prueba2 as $prueba3){
echo $prueba3.'<br />';
}
}
}

$jugador ['España']['Equipo1']['Portero']="Frank";
$jugador ['España']['Equipo1']['Defensa']="Pepe";
$jugador ['España']['Equipo1']['Medio']="Luis";
$jugador ['España']['Equipo1']['Delantero']="Raul";
$jugador ['España']['Equipo2']['Portero']="Tiger";
$jugador ['España']['Equipo2']['Defensa']="Mourin";
$jugador ['España']['Equipo2']['Medio']="Katz";
$jugador ['España']['Equipo2']['Delantero']="Alberto";
$jugador ['Mexico']['Equipo1']['Portero']="Suarez";
$jugador ['Mexico']['Equipo1']['Defensa']="Koltz";
$jugador ['Mexico']['Equipo1']['Medio']="Fernandez";
$jugador ['Mexico']['Equipo1']['Delantero']="Ramirez";
$jugador ['Argentina']['Equipo1']['Portero']="Higuita";
$jugador ['Argentina']['Equipo1']['Defensa']="Mel";
$jugador ['Argentina']['Equipo1']['Medio']="Rubens";
$jugador ['Argentina']['Equipo1']['Delantero']="Messi";
$jugador ['Argentina']['Equipo2']['Portero']="Kostenmeiner";
$jugador ['Argentina']['Equipo2']['Defensa']="Lenkins";
$jugador ['Argentina']['Equipo2']['Medio']="Marash";
$jugador ['Argentina']['Equipo2']['Delantero']="Juanes";
foreach (
$jugador as $pais=>$asoc1){
foreach ($asoc1 as $equipo=>$asoc2){
foreach ($asoc2 as $posicion=>$asoc3){
echo $pais.', '.$equipo', '.$posicion.': '.$asoc3.'<br />';
}
}
}
?>
Para que en el tercer ejemplo no salgan las variables repetidas, cambiar los nombres de $pais, $equipo y $posicion por otros, ya que están repetidas del ejmplo 1 y 3.
Gracias

 

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