Autor Tema: Declarar arrays uni multidimensionales con for y foreach php Ejercicio CU00826B  (Leído 4454 veces)

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Hola, dejo otro ejercicio de php.

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.
 
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;
    }
a) ¿$equipo es una variable normal, un array tradicional ó un array asociativo?
b) ¿portero es un índice de un array, un contenido de un elemento de un array o un contenido de una variable simple?
c) ¿Al ejecutar el código obtienes un resultado por pantalla u obtienes un error? ¿Qué es lo que hace el código?

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.


Código para los tres ejercicios:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Ejercicio. CU00826B</title>
<meta charset="utf-8">
</head>
<body>
<h1>Ejercicio 1</h1>
<?php
$paisLimitrofe = ['Ecuador''Colombia''Brasil''Bolivia''Chile'];
$msg 'Los países limítrofes con Perú son: ';
for($i 0$i count($paisLimitrofe); $i++) {
$msg $msg $paisLimitrofe[$i];
if($i < (count($paisLimitrofe)-2)){
$msg $msg ', ';
} else if ($i == (count($paisLimitrofe)-2)){
$msg $msg ' y ';
} else {
$msg $msg '.';
}
}
echo ($msg);
?>

<hr>
<h1>Ejercicio 2</h1>
<?php
$equipo = array(portero=>'Casillas'defensa=>'Hierro'medio=>'Ces'delantero=>'Ronaldo');
foreach($equipo as $posicion=>$jugador) {
echo "El " $posicion " es " $jugador '. ';
}
?>

<hr>
<h1>Ejercicio 3, apartado a</h1>
<?php
$equipos[0][0][0] = 'Frank'$equipos[0][0][1] = 'Pepe'$equipos[0][0][2] = 'Luis'$equipos[0][0][3] = 'Raul';
$equipos[0][1][0] = 'Tiger'$equipos[0][1][1] = 'Mourin'$equipos[0][1][2] = 'Katz'$equipos[0][1][3] = 'Alberto';
$equipos[1][0][0] = 'Suarez'$equipos[1][0][1] = 'Koltz'$equipos[1][0][2] = 'Fernandez'$equipos[1][0][3] = 'Ramirez';
$equipos[2][0][0] = 'Higuita'$equipos[2][0][1] = 'Mel'$equipos[2][0][2] = 'Rubens'$equipos[2][0][3] = 'Messi';
$equipos[2][1][0] = 'Kostenmeiner'$equipos[2][1][1] = 'Lenkins'$equipos[2][1][2] = 'Marash'$equipos[2][1][2] = 'Juanes';
//$msg = 'Equipo: ';
for($i 0$i count($equipos); $i++) {
$msg 'Pais: ';
if($i == 0) {
$msg $msg 'España.<br/>';
} else if($i == 1){
$msg $msg 'Mexico.<br/>';
} else {
$msg $msg 'Argentina.<br/>';
}
for($j 0$j count($equipos[$i]); $j++) {
$msg $msg 'El equipo ' . ($j 1) . ' está formado por:<br/>';
for($k 0$k count($equipos[$i][$j]); $k++) {
if($k == 0) {
$msg $msg 'Portero: ';
} else if($k == 1) {
$msg $msg 'Defensa: ';
} else if($k == 2) {
$msg $msg 'Medio: ';
} else {
$msg $msg 'Delantero: ';
}
$msg $msg $equipos[$i][$j][$k] . '<br/>';
}
}
echo ($msg '<br/>');
}
?>

<hr>
<h1>Ejercicio 3, apartado b</h1>
<?php
$equipos[0][0][0] = 'Frank'$equipos[0][0][1] = 'Pepe'$equipos[0][0][2] = 'Luis'$equipos[0][0][3] = 'Raul';
$equipos[0][1][0] = 'Tiger'$equipos[0][1][1] = 'Mourin'$equipos[0][1][2] = 'Katz'$equipos[0][1][3] = 'Alberto';
$equipos[1][0][0] = 'Suarez'$equipos[1][0][1] = 'Koltz'$equipos[1][0][2] = 'Fernandez'$equipos[1][0][3] = 'Ramirez';
$equipos[2][0][0] = 'Higuita'$equipos[2][0][1] = 'Mel'$equipos[2][0][2] = 'Rubens'$equipos[2][0][3] = 'Messi';
$equipos[2][1][0] = 'Kostenmeiner'$equipos[2][1][1] = 'Lenkins'$equipos[2][1][2] = 'Marash'$equipos[2][1][2] = 'Juanes';
foreach($equipos as $pais => $valor) {
$msg 'Pais: ';
if($pais == 0) {
$msg $msg 'España.<br/>';
} else if($pais == 1){
$msg $msg 'Mexico.<br/>';
} else {
$msg $msg 'Argentina.<br/>';
}
foreach($valor as $numEquipo => $valor2){
if($numEquipo == 0){
$msg $msg '&nbsp;&nbsp;&nbsp;&nbsp;El equipo 1 está formado por:<br/>';
} else {
$msg $msg '&nbsp;&nbsp;&nbsp;&nbsp;El equipo 2 está formado por:<br/>';
}
foreach($valor2 as $posicion => $valor3){
if($posicion == 0) {
$msg $msg '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Portero: ';
} else if($posicion == 1) {
$msg $msg '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Defensa: ';
} else if($posicion == 2) {
$msg $msg '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Medio: ';
} else {
$msg $msg '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delantero: ';
}
$msg $msg $equipos[$pais][$numEquipo][$posicion] . '<br/>';
}
}
echo ($msg '<br/>');
}
?>

<hr>
<h1>Ejercicio 3, apartado c</h1>
<?php
$equipos1['Espanna']['Equipo1']['portero'] = 'Frank';
$equipos1['Espanna']['Equipo1']['defensa'] = 'Pepe';
$equipos1['Espanna']['Equipo1']['medio'] = 'Luis';
$equipos1['Espanna']['Equipo1']['delantero'] = 'Raul';
$equipos1['Espanna']['Equipo2']['portero'] = 'Tiger';
$equipos1['Espanna']['Equipo2']['defensa'] = 'Mourin';
$equipos1['Espanna']['Equipo2']['medio'] = 'Katz';
$equipos1['Espanna']['Equipo2']['delantero'] = 'Alberto';
$equipos1['Mexico']['Equipo1']['portero'] = 'Suarez';
$equipos1['Mexico']['Equipo1']['defensa'] = 'Koltz';
$equipos1['Mexico']['Equipo1']['medio'] = 'Fernandez';
$equipos1['Mexico']['Equipo1']['delantero'] = 'Ramirez';
$equipos1['Argentina']['Equipo1']['portero'] = 'Higuita';
$equipos1['Argentina']['Equipo1']['defensa'] = 'Mel';
$equipos1['Argentina']['Equipo1']['medio'] = 'Rubens';
$equipos1['Argentina']['Equipo1']['delantero'] = 'Messi';
$equipos1['Argentina']['Equipo2']['portero'] = 'Kostenmeiner';
$equipos1['Argentina']['Equipo2']['defensa'] = 'Lenkins';
$equipos1['Argentina']['Equipo2']['medio'] = 'Marash';
$equipos1['Argentina']['Equipo2']['delantero'] = 'Juanes';
foreach($equipos1 as $pais => $valor) {
$msg 'Pais: ';
if($pais == 'Espanna') {
$msg $msg 'España.<br/>';
} else if($pais == 'Mexico'){
$msg $msg 'Mexico.<br/>';
} else {
$msg $msg 'Argentina.<br/>';
}
foreach($valor as $numEquipo => $valor2){
if($numEquipo == 'Equipo1'){
$msg $msg '&nbsp;&nbsp;&nbsp;&nbsp;El equipo 1 está formado por:<br/>';
} else {
$msg $msg '&nbsp;&nbsp;&nbsp;&nbsp;El equipo 2 está formado por:<br/>';
}
foreach($valor2 as $posicion => $valor3){
if($posicion == 'portero') {
$msg $msg '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Portero: ';
} else if($posicion == 'defensa') {
$msg $msg '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Defensa: ';
} else if($posicion == 'medio') {
$msg $msg '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Medio: ';
} else {
$msg $msg '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delantero: ';
}
$msg $msg $equipos1[$pais][$numEquipo][$posicion] . '<br/>';
}
}
echo ($msg '<br/>');
}
?>

</body>
</html>

http://aprendehtml.byethost3.com/CU00826B/ejerciciosCU00826B.php

Las respuesta al ejercicio 2 son:
a) es un array asociativo.
b) es un índice de un array.
c) Se obtiene un resultado. Mediante foreach se muesta el contenido el array.

Saludos.
« Última modificación: 08 de Marzo 2016, 17:42 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Pedro

Al probar el código me marca un error Parse error: syntax error, unexpected '[' in ... en esta línea

$paisLimitrofe = ['Ecuador', 'Colombia', 'Brasil', 'Bolivia', 'Chile'];

En cambio a tí veo que te funciona perfectamente

Si cambio la declaración a $paisLimitrofe = array('Ecuador', 'Colombia', 'Brasil', 'Bolivia', 'Chile'); ya me funciona bien

Conclusión: dependiento de la versión de php que usemos puede haber algunas construcciones no admitidas. Por ejemplo la versión de php con la que he probado no admitía esa sintaxis.

En el ejercicio 1 está el bucle for normal pero no el for each ¿te ha faltado el bucle con for each?

Los ejercicios 2 y 3 todo bien

Saludos

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Hola Alex.

La versión que usa el servidor es PHP version:   5.4.25. y como dices me funciona perfectamente.

De todas formas viendo lo visto, ¿es preferible que declare los arrays como tu lo hiciste?

Y el apartado b del primer ejercicio se me olvidó. :o, por aquí pongo el código del foreach...
Código: [Seleccionar]
<?php
$msg 'Apartado b.<br/>Los países limítrofes con Perú son: ';
$contador 0;
foreach($paisLimitrofe as $pais){
$msg $msg $pais;
if($contador < (count($paisLimitrofe)-2)){
$msg $msg ', ';
} else if ($contador == (count($paisLimitrofe)-2)){
$msg $msg ' y ';
} else {
$msg $msg '.<br/>';
}
$contador++;
}
echo ($msg);
?>

Y gracias por la correción y tus comentarios.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola en principio con la declaración de arrays mientras te funcione no habría problema sin embargo sí te recomendaría que uses la forma comentada que parece que es compatible con todas las versiones de php. El motivo: que en algún momento es posible que quieras trasladar el código de servidor y podría fallarte en uno de esos traslados.

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