Autor Tema: PHP recorrer arrays (arreglos) con bucle o ciclos for y foreach CU00826B  (Leído 13802 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
 Buenas tardes. Dejo una posible solución de los ejercicios de la entrega CU00826B del curso PHP desde cero.

Citar
EJERCICIO 1

Crea un array con nombre paisLimitrofe donde los elementos del array serán cadenas de texto con los países limítrofes (con frontera) con el tuyo. Por ejemplo si vivimos en Perú tenemos como países limítrofes  Ecuador, Colombia, Brasil, Bolivia y Chile.

a) Utilizando un bucle for, muestra por pantalla los países limítrofes.

b) Utilizando un bucle for each, muestra por pantalla los países limítrofes.

Código: [Seleccionar]
<?php 
$paisLimitrofe = array("Portugal""Andorra""Francia");

echo "Los países limítrofes son: ";
for($i 0$i count($paisLimitrofe); $i++){
echo $paisLimitrofe[$i].", ";
}

echo "<br><br><br>Los países limítrofes son: ";
foreach($paisLimitrofe as $pais){
echo $pais.", ";
}
?>

Citar
EJERCICIO 2

Escribe y ejecuta el siguiente código y responde a las siguientes preguntas:

Código: [Seleccionar]
$equipo = array(portero=>'Casillas', defensa=>'Hierro', medio=>'Ces', delantero=>'Ronaldo');

 

foreach($equipo as $posicion=>$jugador) {

    echo "El " . $posicion . " es " . $jugador;

    }

Citar
a) ¿$equipo es una variable normal, un array tradicional ó un array asociativo?

Es un array asociativo.

Citar
b) ¿portero es un índice de un array, un contenido de un elemento de un array o un contenido de una variable simple?

Es un índice asociativo de un array.

Citar
c) ¿Al ejecutar el código obtienes un resultado por pantalla u obtienes un error? ¿Qué es lo que hace el código?

El error que se obtiene es el siguiente: " Use of undefined constant portero - assumed 'portero'". Aquí, lo que hace el intérprete es como "portero" no está definido como una variable, ni tampoco como una cadena de texto, lo asume, automáticamente, como una cadena de texto.

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.

Código: [Seleccionar]
<?php 
$equipo[0][0][0] = "Fran"
$equipo[0][0][1] = "Pepe";
$equipo[0][0][2] = "Luis";
$equipo[0][0][3] = "Raul";
$equipo[0][1][0] = "Tiger";
$equipo[0][1][1] = "Mourin";
$equipo[0][1][2] = "Katz";
$equipo[0][1][3] = "Alberto";

$equipo[1][0][0] = "Suarez"
$equipo[1][0][1] = "Koltz";
$equipo[1][0][2] = "Fernadez";
$equipo[1][0][3] = "Ramirez";

$equipo[2][0][0] = "Higuita"
$equipo[2][0][1] = "Mel";
$equipo[2][0][2] = "Rubens";
$equipo[2][0][3] = "Messi";
$equipo[2][1][0] = "Kostenmeiner";
$equipo[2][1][1] = "Lenkins";
$equipo[2][1][2] = "Marash";
$equipo[2][1][3] = "Juanes";

for($i 0$i count($equipo); $i++){
echo "<br>En el país: ".($i+1).", ";
for($j 0$j count($equipo[$i]); $j++){
echo "en el equipo: ".($j+1).", <br>";
for($k 0$k count($equipo[$i][$j]); $k++){
echo "en la posición: ".($k+1)." juega: ".$equipo[$i][$j][$k]."<br>";
}
}
}

?>

Citar
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ódigo: [Seleccionar]
<?php 
$equipo[0][0][0] = "Fran"
$equipo[0][0][1] = "Pepe";
$equipo[0][0][2] = "Luis";
$equipo[0][0][3] = "Raul";
$equipo[0][1][0] = "Tiger";
$equipo[0][1][1] = "Mourin";
$equipo[0][1][2] = "Katz";
$equipo[0][1][3] = "Alberto";

$equipo[1][0][0] = "Suarez"
$equipo[1][0][1] = "Koltz";
$equipo[1][0][2] = "Fernadez";
$equipo[1][0][3] = "Ramirez";

$equipo[2][0][0] = "Higuita"
$equipo[2][0][1] = "Mel";
$equipo[2][0][2] = "Rubens";
$equipo[2][0][3] = "Messi";
$equipo[2][1][0] = "Kostenmeiner";
$equipo[2][1][1] = "Lenkins";
$equipo[2][1][2] = "Marash";
$equipo[2][1][3] = "Juanes";

$i 0;
$j 0;
$k 0;

foreach($equipo as $pais => $team){
echo "<br>En el país: ".($pais+1).", ";

foreach($equipo[$pais] as $team => $posicion){
echo "en el equipo: ".($team+1).", <br>";

foreach($equipo[$pais][$team] as $posicion => $jugador){
echo "en la posición: ".($posicion+1)." juega: ".$jugador."<br>";
};
};
}

?>

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

Código: [Seleccionar]
<?php 
$equipo["España"]["Equipo1"]["portero"] = "Fran";
$equipo["España"]["Equipo1"]["defensa"] = "Pepe";
$equipo["España"]["Equipo1"]["medio"] = "Luis";
$equipo["España"]["Equipo1"]["delantero"] = "Raul";
$equipo["España"]["Equipo2"]["portero"] = "Tiger";
$equipo["España"]["Equipo2"]["defensa"] = "Mourin";
$equipo["España"]["Equipo2"]["medio"] = "Katz";
$equipo["España"]["Equipo2"]["delantero"] = "Alberto";

$equipo["México"]["Equipo1"]["portero"] = "Suarez";
$equipo["México"]["Equipo1"]["defensa"] = "Koltz";
$equipo["México"]["Equipo1"]["medio"] = "Fernandez";
$equipo["México"]["Equipo1"]["delantero"] = "Ramirez";

$equipo["Argentina"]["Equipo1"]["portero"] = "Higuita";
$equipo["Argentina"]["Equipo1"]["defensa"] = "Mel";
$equipo["Argentina"]["Equipo1"]["medio"] = "Rubens";
$equipo["Argentina"]["Equipo1"]["delantero"] = "Messi";
$equipo["Argentina"]["Equipo2"]["portero"] = "Kostenmeiner";
$equipo["Argentina"]["Equipo2"]["defensa"] = "Lenkins";
$equipo["Argentina"]["Equipo2"]["medio"] = "Marash";
$equipo["Argentina"]["Equipo2"]["delantero"] = "Juanes";

foreach($equipo as $pais => $team){
echo "En ".$pais;
foreach($equipo[$pais] as $team => $posicion){
echo " en el: ".$team." equipo juega como: <br>";
foreach($equipo[$pais][$team] as $posicion => $juador){
echo $posicion." - ".$juador.", <br>";
}
echo "<br>";
}
echo "<br><br>";
}

?>

Gracias
« Última modificación: 13 de Mayo 2016, 08:40 por César Krall »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU00826B recorrer arrays con for y foreach en PHP
« Respuesta #1 en: 11 de Mayo 2016, 01:45 »
Hola dimiste.

Ejercicio 1 todo bien.

Ejercicio 2, apartado a) bien, apartado b) me imagino que cambiaste las palabras al escribirlas, es un índice de un array asociativo. En cuanto al apartado c), a mi no me da ningún error el código.

Ejercicio 3, las tres soluciones que distes, cumplen con lo que pedía el enunciado, pero no me queda claro que te halla quedado claro el uso de foreach, tu usas este código para recorrer el array, en el cual no das buen uso de los parámetros para recorrer el array.
Código: [Seleccionar]
foreach($equipo as $pais => $team){
echo "En ".$pais;
foreach($equipo[$pais] as $team => $posicion){
echo " en el: ".$team." equipo juega como: <br>";
foreach($equipo[$pais][$team] as $posicion => $juador){
echo $posicion." - ".$juador.", <br>";
}
echo "<br>";
}
echo "<br><br>";
}

yo te propongo este
Código: [Seleccionar]
foreach($equipo as $pais => $valorPais){
echo "En ".$pais;
foreach($valorPais as $numTeam => $valorNumTeam){
echo " en el: ".$numTeam." juega como: <br>";
foreach($valorNumTeam as $posicion => $jugador){
echo $posicion." - ".$jugador.", <br>";
}
echo "<br>";
}
echo "<br><br>";
}

si tienes alguna duda, pregunta.

Saludos. ;D

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Re:CU00826B recorrer arrays con for y foreach en PHP
« Respuesta #2 en: 11 de Mayo 2016, 12:31 »
Buenas, Pedro.

Antes que nada, gracias por tu tiempo dedicado y por corregir el ejercicio.

Sinceramente, me costó mucho aprender los arrays tipo: "$indice => $valor". Y tienes razón es mucho más legible y ordenado como lo haces tu, porque realmente, en el ejemplo:

Código: [Seleccionar]
foreach($equipo as $pais => $team){
echo "En ".$pais;
foreach($equipo[$pais] as $team => $posicion){
echo " en el: ".$team." equipo juega como: <br>";
foreach($equipo[$pais][$team] as $posicion => $juador){
echo $posicion." - ".$juador.", <br>";
}
echo "<br>";
}
echo "<br><br>";
}

"$team" = "$equipo[$pais]".

Sobre el apartado c) del ejercicio 2, no es que nos de un error, sino una "notice". Exactamente me pone esto:

Citar
Notice: Use of undefined constant portero - assumed 'portero' in C:\xampp\htdocs\programacion\aprenderaprogramar\PHP\CU00826B(02).php on line 2

pero porque tengo configurado el servidor que me de tanto los errores como las noticias. Creo que esto depende de los ajustes del servidor.

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