Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Lorenzo31 en 18 de Febrero 2016, 18:33

Título: PHP Matrices. Arrays arreglos multidimensionales sintaxis anidar array CU00824B#
Publicado por: Lorenzo31 en 18 de Febrero 2016, 18:33
Dejo la solución a mi ejercicio.

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head> <meta charset="utf-8"/> </head>
<body>
<?php
$alumnos[0] = array(11483);
$alumnos[1] = array(61972);
$alumnos[2] = array(31341);

for($i=0;$i<3;$i++){
switch($i){
case 0: echo 'Nivel básico: '; break;
case 1: echo '<br/>Nivel medio: '; break;
case 2: echo '<br/>Nivel de perfeccionamiento: '; break;
}
for($x 0$x 4$x++){ echo $alumnos[$i][$x].' '; }
}
       
   $alumnos = array( array(11483),
 array(61972),
 array(31341) );

echo '<br/>';

for($i=0;$i<3;$i++){
switch($i){
case 0: echo 'Nivel básico: '; break;
case 1: echo '<br/>Nivel medio: '; break;
case 2: echo '<br/>Nivel de perfeccionamiento: '; break;
}
for($x 0$x 4$x++){ echo $alumnos[$i][$x].' '; }
}

$alumnos[0][0] = 1$alumnos[0][1] = 14$alumnos[0][2] = 8$alumnos[0][3] = 3;
$alumnos[1][0] = 6$alumnos[1][1] = 19$alumnos[1][2] = 7$alumnos[1][3] = 2;
$alumnos[2][0] = 3$alumnos[2][1] = 13$alumnos[2][2] = 4$alumnos[2][3] = 1;

echo '<br/>';

for($i=0;$i<3;$i++){
switch($i){
case 0: echo 'Nivel básico: '; break;
case 1: echo '<br/>Nivel medio: '; break;
case 2: echo '<br/>Nivel de perfeccionamiento: '; break;
}
for($x 0$x 4$x++){ echo $alumnos[$i][$x].' '; }
}


?>

</body>
</html>

Título: Re:PHP Matrices. Arrays arreglos multidimensionales sintaxis anidar array CU00824B
Publicado por: Mario R. Rancel en 20 de Febrero 2016, 20:35
Buenas tardes, introducir un switch dentro de un bucle for utilizando el contador como elemento discriminante para el switch... la verdad es que es raro ver algo así (yo diría que es más común usar if y el operador módulo), pero en el fondo no veo nada incorrecto, y si te funciona...

Aquí hay una respuesta un poco rústica pero más convencional, https://www.aprenderaprogramar.com/foros/index.php?topic=1893.0

Saludos
Título: Re:PHP Matrices. Arrays arreglos multidimensionales sintaxis anidar array CU00824B
Publicado por: Lorenzo31 en 20 de Febrero 2016, 20:48
Buenas Mario, if con operador modulo? a que te refieres, con if te refieres a 3 if o hay alguna forma de hacerlo mas corto con el modulo ese switch que puse.
Título: Re:PHP Matrices. Arrays arreglos multidimensionales sintaxis anidar array CU00824B
Publicado por: Mario R. Rancel en 22 de Febrero 2016, 09:36
Buenos días, mencioné el operador módulo pensando que era necesario realizar un conteo del tipo 0-1-2-3 y volver a empezar 0-1-2-3 varias veces, eso te lo permite hacer el operador módulo. Pero mirándolo con calma tampoco es necesario. El código de lo que creo sería una solución más estándar (sin usar el switch... ni siquiera if; también he ordenado por apartados) sería este:

Código: [Seleccionar]
<meta charset="utf-8">
<!DOCTYPE html>
<html>
<head> <meta charset="utf-8"/> </head>
<body>
<?php
$idioma[0]='Inglés'$idioma[1]='Francés'$idioma[2]='Alemán'$idioma[3]='Ruso';
$nivel[0]='Nivel Básico'$nivel[1]='Nivel Medio'$nivel[2]='Nivel Perfeccionamiento';

echo '<h2> Apartado a) Ejercicio </h2>';
$alumnosA[0][0] = 1$alumnosA[0][1] = 14$alumnosA[0][2] = 8$alumnosA[0][3] = 3;
$alumnosA[1][0] = 6$alumnosA[1][1] = 19$alumnosA[1][2] = 7$alumnosA[1][3] = 2;
$alumnosA[2][0] = 3$alumnosA[2][1] = 13$alumnosA[2][2] = 4$alumnosA[2][3] = 1;

for($i=0;$i<3;$i++){
for($j 0$j 4$j++){
echo $nivel[$i]. " - ".  $idioma[$j] .": "$alumnosA[$i][$j]. " alumnos <br/>";
}
}

echo '<br/><br/><br/>';
echo '<h2> Apartado b) Ejercicio </h2>';
$alumnosB = array( array(11483),
array(61972),
array(31341) );

for($i=0;$i<3;$i++){
for($j 0$j 4$j++){
echo $nivel[$i]. " - ".  $idioma[$j] .": "$alumnosB[$i][$j]. " alumnos <br/>";
}
}

echo '<br/><br/><br/>';
echo '<h2> Apartado c) Ejercicio </h2>';
$alumnosC[0] = array(11483);
$alumnosC[1] = array(61972);
$alumnosC[2] = array(31341);

for($i=0;$i<3;$i++){
for($j 0$j 4$j++){
echo $nivel[$i]. " - ".  $idioma[$j] .": "$alumnosC[$i][$j]. " alumnos <br/>";
}
}

?>

</body>
</html>

Saludos
Título: Re:PHP Matrices. Arrays arreglos multidimensionales sintaxis anidar array CU00824B#
Publicado por: Lorenzo31 en 22 de Febrero 2016, 19:41
Me parece una solucion muy buena.

Otra podria ser:
   
    for($i=0;$i<3;$i++){
         echo $nivel = (($i=0) ?    'Nivel bajo: ' : (($i=1) ? 'nivel medio: ' : 'nivel alto: ')); }

                  for($x = 0; $x < 4; $x++){ echo $alumnos[$i][$x].' '; }
            }