UT3: CARACTERÍSTICAS DEL LENGUAJE PHP

Alberto Méndez Núñez | 03/10/2025

Curso 2025/2026 - Grupo DAW2

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>