Muestra del código PHP Ejercicio 17
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>CFGS - Desarrollo de Aplicaciones Web</title>
<style>
body {
font-family: Arial, sans-serif;
background: #f4f6f9;
margin: 0;
padding: 0;
}
header {
background: #F59C27;
color: white;
padding: 15px;
text-align: center;
}
h1 {
margin: 0;
}
main {
max-width: 1000px;
margin: 30px auto;
padding: 20px;
background: white;
border-radius: 10px;
box-shadow: 0 4px 10px rgba(0,0,0,0.1);
}
ul {
list-style: none;
padding: 0;
}
footer{
margin: auto;
background-color: #F59C27;
text-align: center;
height: 150px;
color: white;
position: fixed;
bottom: 0;
left: 0;
width: 100%;
}
main{
text-align:center;
justify-content:center;
}
a{
text-decoration: none;
color:purple;
}
table{
border-collapse: collapse;
width: 100%;
border-width: 4px;
}
td{
padding: 10px;
border-width: 4px;
}
#encabezado{
background-color: lightsteelblue;
font-weight: bold;
}
.codigos{
background-color: lightblue;
}
.mostrar{
background-color: lightsalmon;
}
tr{
height: 80px;
}
</style>
</head>
<body>
<header>
<h1><b>UT3: CARACTERÍSTICAS DEL LENGUAJE PHP</b></h1>
<a href="../../AMNDWESProyectoDWES/indexProyectoDWES.php">Alberto Méndez Núñez | 03/10/2025</a>
<p>Curso 2025/2026 - Grupo DAW2</p>
</header>
<main>
<h2><b>Ejercicio 17</b></h2>
<?php
/*
* Autor: Alberto Méndez Núñez
* Fecha de ultima modificación: 17/10/2025
* 17. Inicializar un array (bidimensional con dos índices numéricos) donde almacenamos el nombre de las personas que tienen reservado el
asiento en un teatro de 20 filas y 15 asientos por fila. (Inicializamos el array ocupando únicamente 5 asientos). Recorrer el array con
distintas técnicas (foreach(), while(), for()) para mostrar los asientos ocupados en cada fila y las personas que lo ocupan.
*/
// Cantidad total de filas que tiene el teatro.
$totalFilas = 20;
// Cantidad total de asientos disponibles por cada fila.
$asientosPorFila = 15;
// Matriz bidimensional que representará todos los asientos del teatro.
$mapaAsientos = [];
// Inicialización de la matriz: cada asiento se marca inicialmente como vacío ("").
// Se recorre fila por fila y asiento por asiento.
for ($fila = 0; $fila < $totalFilas; $fila++) {
for ($columna = 0; $columna < $asientosPorFila; $columna++) {
$mapaAsientos[$fila][$columna] = ""; // Asiento vacío.
}
}
// Reserva manual de 5 asientos con nombres de personas.
// (Índices basados en 0).
$mapaAsientos[0][0] = "Juan"; // Fila 1, asiento 1.
$mapaAsientos[6][2] = "Mario"; // Fila 7, asiento 3.
$mapaAsientos[0][5] = "Pedro"; // Fila 1, asiento 6.
$mapaAsientos[2][4] = "Luis"; // Fila 3, asiento 5.
$mapaAsientos[3][2] = "Luigi"; // Fila 4, asiento 3.
/* ==================== Recorrido con foreach ==================== */
echo "<span style='color:red;'>Array recorrida con foreach(): </span><br><br>";
// Inicio de tabla HTML para mostrar resultados.
echo "<table>";
// Encabezado superior: muestra las columnas (asientos).
echo "<tr><th></th>";
for ($columna = 0; $columna < $asientosPorFila; $columna++) {
echo "<th style='border:1px solid black; width:50px; background-color:#ccc;'>C" . ($columna + 1) . "</th>";
}
echo "</tr>";
// Se recorren todas las filas del mapa usando foreach.
foreach ($mapaAsientos as $indiceFila => $filaAsientos) {
echo "<tr>";
// Encabezado lateral de la fila actual.
echo "<th style='border:1px solid black; background-color:#ccc;'>F" . ($indiceFila + 1) . "</th>";
// Recorremos cada asiento de la fila.
foreach ($filaAsientos as $nombrePersona) {
if ($nombrePersona != "") {
// Asiento ocupado pintado en rojo, mostrando nombre.
echo "<td style='border:1px solid black; background-color:red; width:50px;'>$nombrePersona</td>";
} else {
// Asiento vacío pintado en verde.
echo "<td style='border:1px solid black; background-color:green; width:50px;'></td>";
}
}
echo "</tr>";
}
echo "</table>";
/* ==================== Recorrido con while ==================== */
echo "<br><span style='color:red;'>Array recorrida con while(): </span><br><br>";
// Índice de filas para el while.
$filaActual = 0;
echo "<table>";
// Encabezado de columnas.
echo "<tr><th></th>";
for ($columna = 0; $columna < $asientosPorFila; $columna++) {
echo "<th style='border:1px solid black; width:50px; background-color:#ccc;'>C" . ($columna + 1) . "</th>";
}
echo "</tr>";
// Mientras queden filas por recorrer...
while ($filaActual < $totalFilas) {
echo "<tr>";
// Etiqueta lateral indicando número de fila.
echo "<th style='border:1px solid black; background-color:#ccc;'>F" . ($filaActual + 1) . "</th>";
// Índice de columnas para recorrer cada asiento de la fila.
$columnaActual = 0;
// Recorremos todos los asientos de la fila.
while ($columnaActual < $asientosPorFila) {
if ($mapaAsientos[$filaActual][$columnaActual] != "") {
echo "<td style='border:1px solid black; background-color:red; width:50px;'>" . $mapaAsientos[$filaActual][$columnaActual] . "</td>";
} else {
echo "<td style='border:1px solid black; background-color:green; width:50px;'></td>";
}
$columnaActual++; // Avanza al siguiente asiento.
}
echo "</tr>";
$filaActual++; // Avanza a la siguiente fila.
}
echo "</table>";
/* ==================== Recorrido con for ==================== */
echo "<br><span style='color:red;'>Array recorrida con for(): </span><br><br>";
echo "<table>";
// Encabezado de columnas.
echo "<tr><th></th>";
for ($columna = 0; $columna < $asientosPorFila; $columna++) {
echo "<th style='border:1px solid black; width:50px; background-color:#ccc;'>C" . ($columna + 1) . "</th>";
}
echo "</tr>";
// Bucle for para recorrer todas las filas.
for ($fila = 0; $fila < $totalFilas; $fila++) {
echo "<tr>";
// Etiqueta lateral de la fila actual.
echo "<th style='border:1px solid black; background-color:#ccc;'>F" . ($fila + 1) . "</th>";
// Bucle for interno para recorrer asientos de la fila.
for ($columna = 0; $columna < $asientosPorFila; $columna++) {
if ($mapaAsientos[$fila][$columna] != "") {
echo "<td style='border:1px solid black; background-color:red; width:50px;'>" . $mapaAsientos[$fila][$columna] . "</td>";
} else {
echo "<td style='border:1px solid black; background-color:green; width:50px;'></td>";
}
}
echo "</tr>";
}
echo "</table>";
?>
</main>
</body>
</html>